WordPressやWebサイトの高速化を考えるなら、キャッシュを使うことは必要不可欠です。
でも、キャッシュというと、複雑で、副作用で、難解で、なかなか手につけにくくて、理解は後回しになりがちです。
そこで、この記事ではWordPressに関連するキャッシュについて、匠が理解した内容をまとめてみました。
これからサイトの高速化に手を出したい人、自サイトのキャッシュの使い方を見直したい人は、ぜひご活用ください。
WordPress/Webサイトの「キャッシュ」とは
IT業界が長い人は大丈夫だと思いますが、まずは話の大前提となる用語の認識を合わせたいと思います。
みんなが大好きなウィキペディアで調べるとこんな感じです。
キャッシュ (英: cache) は、CPUのバスやネットワークなど様々な情報伝達経路において、ある領域から他の領域へ情報を転送する際、その転送遅延を極力隠蔽し転送効率を向上するために考案された記憶階層の実現手段である。
言わんとしていることは正しいんですが、ちょっと話が広過ぎますね。
そこで老舗のe-wordsで調べると、下記のように記載されています。
キャッシュとは、使用頻度の高いデータを高速な記憶装置に蓄えておくことにより、いちいち低速な装置から読み出す無駄を省いて高速化すること。
かなり「キャッシュ」の概念としては分かりやすいですが、あと一息だと思います。
これを WordPress や Webサイトに限って言えばどういうことか?ということを端的にいうと
サイトの表示を速くする仕組み
もうちょい長く言うなら
Webページの構成要素を、速くダウンロードできる場所に、あらかじめ溜めておく仕組み
構成要素をあらかしめ溜めておく仕組み、という感じで考えても良いかもしれません。
こちらもご覧いただくと良いかもしれません。
いや、もっと混乱するかもしれませんが。
「キャッシュ」という言葉は、最初ボヤッと理解して、それぞれの具体的なキャッシュを覚えてからイメージを湧かせた方が良いかもしれません。
ただ、キャッシュの重要なポイントがあります。
キャッシュが溜まるまでは遅い
つまり、初回やキャッシュの有効期限が切れたときのページ表示には、キャッシュは効果がありません。
この原則を忘れてしまうと、一生懸命に無駄なパフォーマンスチューニングをしてしまって、無駄な時間を費やすことになりますか。(経験談)
以降は「キャッシュ」を保存(蓄積)することを「キャッシュする」と記載します。
WordPressのキャッシュの種類と効果
Webサイトを作るシステムとも言える WordPress ですが、実際のページを表示するまでには、たくさんのステップがあります。
それぞれのステップに対してキャッシュを持つことで、高速化することができます。
ページ・キャッシュ
ページ・キャッシュとは、WordPressが作成するページをサーバーにキャッシュすることを指します。
作成したページは、HTML形式のテキストデータですから、それ自体のサイズは非常に軽いです。
しかし、作成が完了してダウンロードが始まるまでには、たくさんの処理を必要とします。
かなり簡略化して書いてもこれくらいあります。
これらの作成の処理を一度行っておいて、作成結果のページデータをサーバーに保存しておくのがページ・キャッシュです。
つまり、一度ページ・キャッシュを作れば、閲覧するユーザーはページ・キャッシュをダウンロードするだけです。
比較的このページ作成の処理が非常に重たい(=遅い)ため、このページ・キャッシュはWordPressサイトに効果を発揮します。
ちなみに、このページ・キャッシュはたいてい下記の条件に達するまで更新されません。
- ページ・キャッシュを保存してから一定期間を経過した場合
- ページ(記事・固定ページなど)を作成/更新/削除した場合
これはページ・キャッシュを実現するプラグインの設定によります。理解していないと、トラブルが起きやすいポイントになるので注意が必要です。
なお、ページ・キャッシュは、ページを作成する初回のアクセス時は通常の作成処理を行います。そのため、効果が現れるのは2回目以降のアクセスからだと理解しておく必要があります。
ブラウザ・キャッシュ
ブラウザ・キャッシュとは、WordPressが作成するページをブラウザにキャッシュすることを指します。
ページ・キャッシュと違って、サーバーではなくクライアント端末(パソコンやスマホ)のブラウザアプリに保存しておくキャッシュとなります。
つまり、一度ダウンロードしたものを再利用するためのキャッシュといえます。
そのため、ダウンロードが発生しない分、理論上ぺージ・キャッシュに比べても高速化が見込めます。
ページ・キャッシュと違いは下記の点が挙げられます。
- ブラウザアプリに依存する(予めキチンと設定されていることが多いですが)
- キャッシュ対象はページ(HTMLデータ)だけでなく、スクリプトファイルや画像なども対象にできる
ちなみに、このブラウザ・キャッシュも下記の条件に達するまで更新されません。
- キャッシュを保存してから一定期間を経過した場合(保存期間はサーバー・クライアントの双方で設定する)
- ページ(記事・固定ページなど)を作成/更新/削除した場合
これもブラウザ・キャッシュを実現するプラグインの設定によります。
特に後者の条件が判定できるように設定されていないと、更新しても更新前のページがずっと表示されてしまったり、毎回キャッシュを利用せずにダウンロードをしてしまったりします。
ここもキチンと理解していないと、トラブルが起きやすいポイントになるので注意が必要です。
また、ページ・キャッシュと同様に、初回のアクセス時は通常のページ作成処理などが発生します。そのため、効果が現れるのは2回目以降のアクセスからだと理解しておく必要があります。
オブジェクト・キャッシュ
オブジェクト・キャッシュとなると、また話が複雑になります。
簡単に言えば、WordPress内の処理のうち、処理に時間がかかるデータをサーバーのメモリ上に保管(キャッシュ)しておく仕組みです。
このキャッシュは、WordPress独自の機能です。
これを活用すると、データベースへの接続や接続後の処理を減らすことができるため、高速化につながります。
技術的な詳しい仕組みは、こちらをご覧ください。
効けば大きな効果が見込めるという記事も出ています。

しかし、これまで紹介したキャッシュと異なり、効いてるかどうか効果が見えにくいキャッシュです。
データベース・キャッシュ
さらに有効無効が見えないキャッシュです。
このキャッシュは、データベースに問い合わせた結果データを、データベース内に一時保管する仕組みです。
WordPressの仕組みのうち、データベース(MySQL)からデータを取得する時間を短縮する効果があります。
このキャッシュによって、データベースで問い合わせる処理の時間を短縮できるわけです。
記事表示の工程の中では限定的な部分ですが、大量のデータからピックアップする時間を短縮する仕組みということから、かなりの処理時間の短縮が見込めます。
もちろん、理論上は大量のデータがある場合には、という条件で効果のあるキャッシュと言えます。
Transit API (トランジェント)
こちらも WordPress 標準の機能となります。下記のページの説明で十分理解できると思います。
有効期限という機能を使うことで、キャッシュされるデータを一時的に wp_options テーブルへ保存するという処理をシンプルに実現します。
ひと言で言えば、一部のデータをデータベースに保存するキャッシュといえます。
データベースからデータを取り出す必要があるだけに、効果のほどはかなり限定的なようです。
CDN
正式名称は「Contents Deilivery Network」です。最近では一般的な仕組みとなってきました。
ひと言で言うなら、ユーザーの近所にキャッシュデータをダウンロードできるサイトを用意するサービスです。
キャッシュ技術をサービス化した仕組みとも言えます。
サービスによって何をキャッシュするかは異なってきますが、画像やスクリプトファイルなどの比較的サイズが大きいファイルをダウンロードする時間の短縮には効果てきめんです。
これ以上の詳しい技術説明は、下記をご覧いただく方が良いです。

ちなみに、当サイトが利用しているのは CloudFlare ですが、個人でも使えるものは色々あります。



他にも、APC Cache や PHP Cache、コードキャッシュなどキリが無いほどありますが、基本的には上記ほど効果があるものには出会えていません。
それらが不要というつもりもないのですが、これまでご紹介したキャッシュを使って高速化を試してみてから、さらに調べてみるのが良いと思います。
また、上記の内容で不足している場合には、下記のコンテンツを参考にしても良いかもしれません。
なお、キャッシュではありませんが、FastCGI を導入できる場合はぜひ導入しましょう。下手なキャッシュより、よっぽど効果があります。少し副作用もあるみたいですが。。。<
WordPressでキャッシュが効果を発揮する順番は?
これからキャッシュを導入したい人は、どれから手をつけて良いか迷うことでしょう。
匠が調べた限りでは、下記の順で検討することをオススメします。
- ブラウザ・キャッシュ
- ページ・キャッシュ
- CDN
「導入しやすさ」と「導入効果」を考慮した場合です。
CDNを利用するには、契約しているサーバーとは別に別途サービス登録が必要です。また、DNSなどの知識が必要なため、ハードルはお高めです。しかし、補ってあまりあるほどに、高速化には絶大な効果があります。
他のキャッシュは効果がないわけではありません。しかし、それぞれのキャッシュとWordPressやデータベースの構造をキチンと理解しないと、効果を出すのが難しいと実感しています。
また、同じ名前のキャッシュであれば、WordPressで重複して使っても効果がないです。
むしろエラーが出たり、上手く表示されなくなったりすることもあるので、注意が必要です。
そのため、異なるプラグインやCDNサービスを複数導入する場合は、同じ名前のキャッシュ機能があれば、要注意です。どのプラグインまたはサービスで有効にするか、しっかり意識した方が良さそうです。
何か不都合が起こったら元に戻せる状態にして、ちょっとずつ有効にしていくのがオススメです。
WordPress キャッシュ機能の利用チェックシート
これからキャッシュを利用する人、または 今後利用される方は下記を埋めてみましょう。
WordPressキャッシュ 利用チェックシート
機能種別 | プラグイン名/サービス名など |
---|---|
ページ・キャッシュ | |
ブラウザ・キャッシュ | |
オブジェクト・キャッシュ | |
データベース・キャッシュ | |
Transit API | |
CDN |
例:いつもの匠 の WordPressキャッシュ利用状況
この機能執筆時点ですが、当サイトのキャッシュ利用状況は下記の通りです。
機能種別 | プラグイン名/サービス名など |
---|---|
ページ・キャッシュ | Kusanagi (bcache + fcache) + Cloudflare(ページキャッシュ設定) |
ブラウザ・キャッシュ | Cocoonテーマの高速化機能 |
オブジェクト・キャッシュ | W3 Total Cache |
データベース・キャッシュ | W3 Total Cache |
Transit API | W3 Total Cache |
CDN | Cloudflare |
これ以外のキャッシュはあまり効果が見られなかったので、当サイトでは利用していません。
これは余談ですが、W3 Total Cache + Cloudflare で殆ど機能は網羅できてしまうのですが、なぜか Kusanagi や Cocoonテーマの方が速く感じるキャッシュがいくつかありました。そのため、少々面倒ですが、それぞれ機能ごとに使い分けています。
ここまでやる必要があるのかは甚だ疑問ではありますけどね。
キャッシュではないWordPressの高速化の機能
WordPressの高速化を語るとき、下記のような機能がよく説明されます。
- Minify
- スクリプト結合
- 圧縮転送
- スクリプトの遅延読み込み
- スクリプトのフッター移動
これらはキャッシュとは直接関係しません!
誤解をしないように、ということもありますが、これらはキャッシュとの併用しても問題ないと考えて大丈夫です。基本的には。
WordPress高速化の参考情報
今回の記事を執筆するにあたって、下記の情報ソースも読んでみました。
書籍
全てが直結するわけではありませんが、こういう技術に興味のある方やWordPress/Webサイトを仕事にされる方は、ぜひ読まれると良いのではないでしょうか。



サイト
どちらもすごく参考になるけど、浅すぎたり深すぎたりして思う粒度ではなかったので、当ページを書くことにしました。
たぶん、そのまま内容をパクったりはしていないと思います。









WordPressをキャッシュで高速化を理解した後は?
高速化の道はここで終わりではありません。
こちらにあるように、レンダリング(描画処理)など改善できるところはいくつもあります。

また、詳しい仕組みをきちんと理解すると、改善できるポイントを思いつくことがあります。

あとは、データベース、つまりは MySQLやOSのチューニングをする余地もあります。これらについては、また改めて整理してご紹介したいと思います。