wpX Speedのサーバーキャッシュ|除外される条件を自分のURLで判定
wpX Speedは、サーバー側の「リバースプロキシ」でページをキャッシュ(保存しておいて使い回す)ことで、表示を速くしています。ただ、すべてのページがキャッシュされるわけではなく、管理画面・REST API・フィード・サイトマップや、ログインしている人のアクセスなど、除外される条件がマニュアルに決まっています。逆に、キャッシュされると困るページ(一部の人にだけ見せるページなど)もあります。この記事では、除外条件を整理し、実際のサイトのURLに当てはめて、どのページがキャッシュされるかを判定します。
(確認:wpX Speed マニュアル「サーバーキャッシュ」。確認日:2026年10月30日。判定は、当サイト realine.net のURLに対して同日に実行。当サイトはwpX Speedではないため、実際にwpX Speedでキャッシュされたかは確かめていません)
マニュアルに書かれている仕様
| 項目 | マニュアルの記載 |
|---|---|
| 仕組み | リバースプロキシによるキャッシュ |
| 対象 | 動的ページ(主にPHP)、静的ページ(画像・CSSなど)、404ページ。URLごとに保存し、スマートフォン用はパソコンと別に保存 |
| 更新 | 一定時間ごと。コメントの投稿やページの更新があった時も更新する |
| 除外(アクセス) | ログインページ・管理画面へのアクセス、ログインに関係するクッキー(wordpress_logged_in など)があるアクセス、Ajax、HEAD・GET以外の方法、ベーシック認証・ダイジェスト認証をかけたページ、フィーチャーフォンからのアクセス |
| 除外(応答) | レスポンスヘッダーに「private」がある場合、200・404以外のステータスの場合 |
| 除外(URI) | /wp-admin/、/wp-json/、/wp-*.php、/xmlrpc.php、/feed/、sitemap.xml、sitemap_index.xml、/cart/、/checkout/ などのショッピングの画面 ほか |
マニュアルには注意として、特定のIPアドレスやブラウザにだけ見せるように .htaccess で制限しているページがあると、本来は公開していないデータがキャッシュされ、別の人が見られるようになることがある、と書かれています。会員制・ショッピングのような人ごとに表示が違うページでは、速くなる効果が出にくい、ともあります。
コード:URLごとに判定する
除外条件のうち、URIのパターン・ステータス・「private」のヘッダーの3つを、ログインしていない状態のアクセスで調べます。パターンの照合のしかたはマニュアルに書かれていないため、「URLにその文字列が含まれるか」で判定しています。
# wpX Speed のサーバーキャッシュの「除外条件」(公式マニュアル)を、実際のサイトのURLに当てはめて、キャッシュされるかを判定する(読み取りのみ)
# 判定に使う条件:URIのパターン/HTTPステータスが200・404以外/レスポンスヘッダーに private
# (ログインのクッキー・Ajax・HEAD/GET以外は、ログインしていない GET で調べるので当てはまらない)
# パターンの照合は「URLに含まれるか」で行う(マニュアルの照合方法は書かれていないため、筆者の簡略化)
import re
import sys
import urllib.request
import urllib.error
EXCLUDE_URI = ['/wp-admin/', '/wp-json/', '/wp-*.php', '/xmlrpc.php', '/feed/', 'sitemap.xml', 'sitemap_index.xml',
'/wp-content/plugins/siteguard', '/login_*', '/store/', '/cart/', '/my-account/', '/checkout/', '/addons/',
'?wptouch_switch=mobile', '?wptouch_switch=desktop', '/usces-cart/', '/usces-member/']
UA = {'User-Agent': 'Mozilla/5.0 (cache-check)'}
def pattern_hit(url):
for p in EXCLUDE_URI:
rx = re.escape(p).replace(r'\*', '[^/]*') # 「*」は任意の文字列
if re.search(rx, url):
return p
return None
def fetch(url):
req = urllib.request.Request(url, headers=UA)
try:
with urllib.request.urlopen(req, timeout=20) as r:
return r.status, r.headers.get('Cache-Control', '')
except urllib.error.HTTPError as e:
return e.code, e.headers.get('Cache-Control', '')
site = sys.argv[1] if len(sys.argv) > 1 else 'https://realine.net'
paths = ['/', '/guide/', '/mt5-ea-install/', '/category/wordpress/', '/feed/', '/sitemap.xml',
'/wp-json/wp/v2/posts?per_page=1', '/wp-login.php', '/no-such-page-xyz/', '/?s=MT5']
print(f'{"URL":<38}{"状態":>5} {"判定":<10}理由')
for p in paths:
url = site + p
st, cc = fetch(url)
hit = pattern_hit(p)
if hit:
verdict, why = '除外', f'URIのパターン {hit}'
elif st not in (200, 404):
verdict, why = '除外', f'ステータス {st}'
elif 'private' in cc.lower():
verdict, why = '除外', f'Cache-Control: {cc}'
else:
verdict, why = 'キャッシュ', f'Cache-Control: {cc or "(なし)"}'
print(f'{p:<38}{st:>5} {verdict:<10}{why}')
実行の結果(realine.net に当てはめた場合)
URL 状態 判定 理由
/ 200 キャッシュ Cache-Control: (なし)
/guide/ 200 キャッシュ Cache-Control: (なし)
/mt5-ea-install/ 200 キャッシュ Cache-Control: (なし)
/category/wordpress/ 200 キャッシュ Cache-Control: (なし)
/feed/ 200 除外 URIのパターン /feed/
/sitemap.xml 200 除外 URIのパターン sitemap.xml
/wp-json/wp/v2/posts?per_page=1 200 除外 URIのパターン /wp-json/
/wp-login.php 200 除外 URIのパターン /wp-*.php
/no-such-page-xyz/ 404 除外 Cache-Control: no-cache, must-revalidate, max-age=0, no-store, private
/?s=MT5 200 キャッシュ Cache-Control: (なし)
- トップ・記事・カテゴリーのページは、除外条件に当たらないため、キャッシュの対象になる
- フィード・サイトマップ・REST API・ログイン画面は、URIのパターンで除外される。自動投稿などで REST API を使う処理は、キャッシュの影響を受けない
- 存在しないページ(404)は、マニュアルでは対象だが、当サイトでは WordPress が「private」を含むヘッダーを返していたため、この条件で除外される
- サイト内検索の結果(/?s=)は除外条件に当たらず、キャッシュの対象になる。検索結果の更新が遅れる場合があると考えられる(筆者の推定)
移す前に確かめること(筆者の考え)
- 人によって表示を変えているページ:.htaccess のIP制限や、プラグインでの出し分けがあるなら、キャッシュから外す設定(マニュアルの「サーバーキャッシュ設定」)を考える
- 記事を直したのに古い表示が出る時:ページの更新でキャッシュも更新されるとあるが、反映を確かめる時は、ログアウトした状態の別のブラウザでも見る
- 速さを比べる時:キャッシュされたページと、されないページで速さが違う。比べる時は同じ種類のページで測る(curlでTTFBを測る方法)
この記事で確かめていないこと
- wpX Speedで、キャッシュされたかどうかを外から見分ける方法(応答のヘッダーなど)
- キャッシュの「一定時間」の長さ
- URIのパターンの照合のしかた(前方一致か、含むか)
まとめ
- wpX Speedのサーバーキャッシュは、記事・画像・404ページなどをURLごとに保存し、ログインしている人・管理画面・REST API・フィード・サイトマップなどは除外する
- 当サイトのURLに当てはめると、記事・カテゴリー・検索結果はキャッシュの対象、REST API・フィード・サイトマップ・ログイン画面は除外
- .htaccess で一部の人にだけ見せているページは、キャッシュで別の人に見える場合があるので、移す前に確かめる
本記事はwpX Speedの公式マニュアルの記載と、当サイトのURLへの当てはめにもとづく整理です。料金とプランの仕組みはwpX Speedの料金とプランにまとめています。


