小規模サイトの表示速度改善メモ:第1回 WordPressを毎回動かさないためのキャッシュの考え方

小規模サイトの表示速度改善メモ:第1回 WordPressを毎回動かさないためのキャッシュの考え方
小規模WordPressサイトが重いとき、まず見直したい「ページキャッシュ」の考え方

はじめに

この記事は、小規模なWordPressサイト・企業サイトの制作・保守を担当している方向けです。

特に、共用レンタルサーバを使っているサイトで、コストを大きく増やさずに表示速度を改善する場合、まず何から考えるべきかを整理します。

表示速度の改善というと、サーバのスペックアップや高機能なCDNの導入を思い浮かべるかもしれません。もちろん、それらが有効な場合もあります。

ただ、小規模な企業サイトやブログでは、予算や運用体制の都合から、すぐに大きな環境変更ができないケースも少なくありません。

そのような場合にまず考えたいのが、アクセスのたびに毎回WordPressを動かさないという考え方です。


小規模サイトでは、サーバを強くするだけが解決策ではない

小規模な企業サイトやブログでは、WordPressを共用レンタルサーバで運用しているケースも多いと思います。

共用サーバは低コストで使いやすい一方、サーバの混雑や同居サイトの影響を受けることがあります。

たとえば、次のようなケースです。

  • サイトを開くときに時間がかかる
  • ページ遷移のたびに少し待たされる
  • 自社サイトへのアクセスは増えていないのに、特定の時間帯だけ応答が遅い
  • 管理画面や公開ページの表示が日によって不安定に感じる

こういったサーバに依存する部分は、自社サイト側だけでは完全にコントロールできません。

もちろん、サーバのスペックを上げたり、より高性能な環境へ移行したりすることも選択肢です。しかし、予算や運用体制を考えると、すぐに実施できないケースも少なくありません。

そのため、まずは現在の環境でできることとして、WordPressやデータベースの処理を毎回発生させない工夫を検討する価値があります。

そこで重要になるのが、ページキャッシュの考え方です。


WordPressは、ページ表示のたびに処理が走る

WordPressは、あらかじめ完成したHTMLファイルをそのまま置いている静的サイトとは異なります。

多くの場合、ユーザーがページにアクセスするたびにPHPが動き、データベースから必要な情報を取り出し、テーマやプラグインの処理を通してHTMLを生成しています。

たとえば、1ページを表示するだけでも、裏側では次のような処理が行われます。

  • WordPress本体の読み込み
  • テーマテンプレートの読み込み
  • 投稿や固定ページのデータ取得
  • メニューやウィジェットの取得
  • プラグインによる追加処理
  • HTMLの生成

もちろん、これらの処理はWordPressを便利に使うために必要なものです。

ただし、ページを開くたびに毎回これらの処理が走ると、サーバの状態に影響を受けやすくなります。プラグインが増えたり、ページが複雑になったり、サーバが混雑したりすると、表示までの時間が長くなることがあります。


「毎回WordPressを動かさない」とはどういうことか

WordPressは、管理画面からページや記事を更新できる便利なCMSです。

一方で、ユーザー向けの公開ページについては、必ずしもアクセスのたびに毎回PHPを動かし、データベースから情報を読み込み、HTMLを生成する必要があるとは限りません。

特に小規模な企業サイトやブログでは、未ログインの閲覧者に対して、ほとんど同じ内容を表示するページが多くあります。

たとえば、会社概要、サービス紹介、投稿記事、お知らせ、よくある質問などは、誰が見ても基本的には同じ内容です。

このようなページでは、一度生成したHTMLを保存しておき、次回以降は保存済みのHTMLを返すことで、WordPress本体やデータベースの処理を減らすことができます。

これがページキャッシュの基本的な考え方です。

通常の表示では、次のような流れになります。

ページ表示の流れの図

ページキャッシュを活用すると、ユーザーの体感速度だけでなく、アクセス集中時の負荷軽減にもつながります。

重要なのは、WordPressを使わないようにするという意味ではありません。

管理画面で更新できる便利さはそのまま残しつつ、公開ページの表示時には、毎回重い処理を走らせないようにする、という考え方です。


ページキャッシュが効きやすいページ

ページキャッシュが効きやすいのは、ユーザーごとに表示内容を変える必要が少ないページです。

たとえば、次のようなページです。

  • トップページ
  • 会社概要
  • サービスページ
  • 投稿記事
  • お知らせ
  • 実績紹介
  • よくある質問
  • 採用情報
  • ブログ記事
  • カテゴリー一覧

つまり、誰が見ても同じ内容のページです。

基本的には、未ログインの閲覧者に同じ内容を見せるページはキャッシュしやすいと考えられます。

小規模な企業サイトであれば、公開ページの多くはこの条件に当てはまります。 そのため、ページキャッシュは比較的導入効果を得やすい施策です。


ページキャッシュに注意が必要なページ

一方で、ページキャッシュは何にでも使えばよいわけではありません。

キャッシュは便利ですが、本来ユーザーごとに変わる内容まで保存してしまうと、誤表示やフォーム不具合につながる可能性があります。

特に注意したいのは、ユーザー固有の情報を含むページです。

たとえば、確認画面や会員ページなどで、特定のユーザー向けに生成されたHTMLがキャッシュされ、それが別のユーザーに表示されるような状態は避けなければいけません。

氏名、メールアドレス、ユーザーID、購入履歴、お問い合わせ内容などが含まれるページでは、キャッシュ対象にしない設計が必要です。

また、ユーザーからの入力を受け付けるフォーム類では、Cookieやセッション、nonceやCSRFトークンが埋め込まれることもあります。 こういった仕組みはページキャッシュとの相性が悪く、正常に動かなくなる可能性があるほか、条件によってはユーザー固有の情報を含めキャッシュされてしまう場合があり、原則としてページキャッシュの対象から外す方が安全です。

たとえば、次のようなページではページキャッシュの使用に注意が必要です。

  • お問い合わせフォーム
  • 確認画面
  • 送信完了画面
  • ログインページ
  • 会員ページ
  • マイページ
  • カート・決済
  • 検索結果
  • パスワード保護ページ
  • Cookieで表示が変わるページ
  • nonceを使うページ
  • ユーザーごとに表示が変わるページ

また、ページ内に次のような要素がある場合も、キャッシュとの相性を確認する必要があります。

  • ランダム記事
  • 今日の日付
  • 現在の空き状況
  • リアルタイム在庫
  • 閲覧数ランキング
  • ユーザー別おすすめ

これらは、必ずしもページキャッシュが使えないという意味ではありません。

ただし、キャッシュ時間を短くする、対象ページから除外する、JavaScriptで後から取得する、部分的に動的表示にするなど、別の工夫が必要になる場合があります。

ページキャッシュを使うときは、このページは誰が見ても同じ内容でよいかを確認することが大切です。


WordPressで使える主なキャッシュの種類

WordPressサイトで使われるキャッシュには、いくつかの種類があります。

種類 役割 補足
ページキャッシュ HTMLを保存して返す 通常閲覧の高速化に効きやすい
ブラウザキャッシュ 画像・CSS・JSを再利用する 再訪問時に効きやすい
オブジェクトキャッシュ DB問い合わせ結果を保存する PHPは動くがDB負荷を減らせる
CDN / 前段キャッシュ サーバの手前で返す サーバ負荷軽減に有効
サーバーキャッシュ サーバ機能として返す 環境によって効果が大きい

この中で、今回特に重視しているのはページキャッシュです。

ページキャッシュは、WordPressが生成したHTMLを保存しておき、次回以降のアクセスでそのHTMLを返す仕組みです。

画像やCSS、JavaScriptのキャッシュも重要ですが、WordPressの処理負荷を減らすという意味では、まずページキャッシュの有無を確認したいところです。


共用レンタルサーバでは、サーバ側のキャッシュ機能も確認したい

WordPressのキャッシュというと、まずキャッシュプラグインを思い浮かべるかもしれません。

もちろん、キャッシュプラグインも選択肢の一つです。

ただし、使用しているレンタルサーバによっては、サーバ側でキャッシュ機能やCDN機能が用意されている場合があります。

このような機能を使える場合は、WordPressプラグインだけで完結させるのではなく、サーバ側の機能も含めて検討するとよいでしょう。

たとえば、次のような機能があります。

  • LiteSpeed Cache LiteSpeed系のサーバで利用されることが多いキャッシュ機能です。WordPressプラグインとして導入しますが、LiteSpeed Web Server側のページキャッシュと連携して動作する点が特徴です。

  • ロリポップ!アクセラレータ ロリポップ!で提供されているキャッシュ機能です。キャッシュサーバーから応答することで、WordPressなどの動的サイトでも表示速度の向上やサーバ負荷の軽減が期待できます。LiteSpeed Cacheとの併用はできないため、どちらを使うか整理が必要です。

  • さくらのコンテンツブースト さくらのレンタルサーバで利用できるCDN機能です。契約プランごとに一定の無料利用枠があり、それを超える場合は従量課金になるため、利用量の確認が必要です。

  • ConoHa WINGのコンテンツキャッシュ ConoHa WINGの管理画面から設定できるキャッシュ機能です。環境によっては初期状態で有効になっている場合があります。動的ページもキャッシュ対象になる設定があるため、フォームや会員ページがある場合は確認が必要です。

  • ヘテムルのコンテンツキャッシュ WordPress向けのキャッシュ機能や、静的ファイル向けのキャッシュ機能が用意されています。サイトの内容に応じて使い分けを検討できます。

  • Cloudflareなどの外部CDN 利用中のレンタルサーバとは別に、外部CDNを導入する方法です。サーバの手前でキャッシュできるため有効な場合がありますが、DNSやキャッシュ除外の設計が必要になり、やや導入難度は上がります。

ただし、どのキャッシュ方法であっても、フォームや動的ページの除外設計は必要です。

このあたりの比較や選び方は、次回以降に詳しくご紹介します。


キャッシュを入れる前に確認したいこと

ページキャッシュを導入する前に、次の点は確認しておきたいところです。

  • フォームがあるか
  • 確認画面・完了画面があるか
  • ログイン機能があるか
  • 会員ごとに表示が変わるか
  • Cookieで表示を切り替えているか
  • PC/SPでページやHTMLを出し分けていないか
  • パスワード保護ページがあるか
  • 検索結果ページをキャッシュ対象にする必要があるか
  • 更新後にキャッシュを削除できるか
  • キャッシュ削除の操作が分かりやすいか
  • 管理者が確認する方法を決めているか

特に、問い合わせフォームや確認画面があるサイトでは注意が必要です。

キャッシュを有効にした後は、実際にフォーム送信のテストを行い、入力画面、確認画面、送信完了画面が正しく動くか確認しておきましょう。

また、サイト更新後に古い内容が表示され続けないよう、投稿更新時にキャッシュが削除されるか、手動で削除できるかも確認しておく必要があります。

まずは、トップページ・主要な固定ページ・記事ページがキャッシュ対象にできるかを確認し、そのうえでフォーム、確認画面、ログインページなどを除外できるかを見ておくとよいでしょう。


キャッシュが効いているかは、体感だけで判断しない

設定画面で有効になっているだけでは、実際に一般閲覧者へキャッシュが返っているとは限りません。設定後は、必ず未ログイン状態で確認することが大切です。

キャッシュが効いているかどうかは、体感だけで判断しない方が安全です。

特にWordPressでは、ログイン中の管理者にはキャッシュが効かない設定になっていることがあります。

そのため、管理者としてサイトを見ているだけでは、一般閲覧者にキャッシュが返っているか分からない場合があります。

確認するときは、次のような方法を使います。

  • シークレットウィンドウで確認する
  • 未ログイン状態で確認する
  • Chrome DevToolsのNetworkタブを見る
  • HTMLドキュメントのレスポンスヘッダーを見る
  • キャッシュプラグインやサーバ管理画面の表示を確認する

LiteSpeed系のキャッシュであれば、環境によっては x-litespeed-cache: hit のようなヘッダーが付く場合があります。

ただし、どのヘッダーが付くかはキャッシュ方式やサーバによって異なります。

重要なのは、管理者として見た体感だけで判断しないことです。


まず目指すのは「すべてをキャッシュ」ではなく「主要ページを安定して速くする」こと

ページキャッシュを使うときに、すべてのページを無理にキャッシュしようとする必要はありません。

問い合わせフォーム、確認画面、ログインページ、会員ページなどは、キャッシュ対象から外してよいページです。

まず目指したいのは、トップページ、サービスページ、記事、お知らせ、会社概要など、主要な閲覧ページを安定して速く返すことです。

小規模な企業サイトであれば、アクセスの多くはこうした公開ページに集まります。

そのため、主要ページだけでもキャッシュが安定して効けば、共用サーバ環境では十分に効果を感じられることがあります。

表示速度改善は、無理にすべてを高速化することではありません。

負荷のかかる処理を減らし、キャッシュしやすいページはキャッシュし、キャッシュしてはいけないページは除外する。 この切り分けが大切です。


まとめ

WordPressは便利なCMSですが、アクセスのたびに毎回PHPやデータベース処理を動かしていると、サーバの負荷や応答速度の影響を受けやすくなります。

特に共用レンタルサーバでは、サーバの混雑や同居サイトの影響を完全には避けられません。

そのため、小規模なWordPressサイトでは、まずページキャッシュを検討する価値があります。

今回のポイントをまとめると、次の通りです。

  • WordPressはアクセス時にPHPやデータベース処理を行ってHTMLを生成している
  • 未ログインの通常閲覧ページはページキャッシュしやすい
  • 会社概要、サービスページ、記事、お知らせなどはキャッシュの効果を得やすい
  • フォーム、ログイン、会員ページ、ユーザー別表示はキャッシュ除外を検討する
  • サーバ側のキャッシュ機能やCDN機能も確認する
  • キャッシュが効いているかは、体感ではなくヘッダーや未ログイン状態で確認する
  • すべてのページではなく、主要ページを安定して速くすることを目指す

ページキャッシュは、サーバの性能そのものを上げる施策ではありません。

しかし、WordPressやデータベースの処理を毎回発生させないことで、共用サーバでも表示速度や安定性の改善につながる場合があります。

次回は、キャッシュと同じくらい効果が出やすい「画像の軽量化」について整理します。


シリーズ記事

このブログの人気の投稿

WordPressプラグインのサプライチェーン攻撃から考える、日々のセキュリティ運用

デザインは売上に影響するのか?