メニュー
このサイトの運営者
\ Amazonタイムセール祭!最大12%ポイント還元 /

WordPressを高速化するキャッシュを正しく理解しよう(チェックシート公開)

アイキャッチ:WordPressを高速化するキャッシュを正しく理解しよう

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独自の機能です。

これを活用すると、データベースへの接続や接続後の処理を減らすことができるため、高速化につながります。

技術的な詳しい仕組みは、こちらをご覧ください。

効けば大きな効果が見込めるという記事も出ています。

@IT
“WordPressを簡単に1620倍高速化“する「部分キャッシュ」活用テクニック エンタープライズ用途での利用が増えている「WordPress」の高速化チューニングテクニックを解説する本連載。今回は、「WordPressアプリケーションレベルで実施する高速化チ...

しかし、これまで紹介したキャッシュと異なり、効いてるかどうか効果が見えにくいキャッシュです。

データベース・キャッシュ

さらに有効無効が見えないキャッシュです。

このキャッシュは、データベースに問い合わせた結果データを、データベース内に一時保管する仕組みです。

WordPressの仕組みのうち、データベース(MySQL)からデータを取得する時間を短縮する効果があります。

このキャッシュによって、データベースで問い合わせる処理の時間を短縮できるわけです。

記事表示の工程の中では限定的な部分ですが、大量のデータからピックアップする時間を短縮する仕組みということから、かなりの処理時間の短縮が見込めます。

もちろん、理論上は大量のデータがある場合には、という条件で効果のあるキャッシュと言えます。

Transit API (トランジェント)

こちらも WordPress 標準の機能となります。下記のページの説明で十分理解できると思います。

有効期限という機能を使うことで、キャッシュされるデータを一時的に wp_options テーブルへ保存するという処理をシンプルに実現します。

ひと言で言えば、一部のデータをデータベースに保存するキャッシュといえます。

データベースからデータを取り出す必要があるだけに、効果のほどはかなり限定的なようです。

CDN

正式名称は「Contents Deilivery Network」です。最近では一般的な仕組みとなってきました。

ひと言で言うなら、ユーザーの近所にキャッシュデータをダウンロードできるサイトを用意するサービスです。

キャッシュ技術をサービス化した仕組みとも言えます。

サービスによって何をキャッシュするかは異なってきますが、画像やスクリプトファイルなどの比較的サイズが大きいファイルをダウンロードする時間の短縮には効果てきめんです。

これ以上の詳しい技術説明は、下記をご覧いただく方が良いです。

REDBOX Labo
第1回 CDN の 仕組み (CDNはどんな技術で何が出来るのか) | REDBOX Labo 今回は、何故CDNを使う必要があるのか、CDN の 仕組み や技術的なことをなるべく分かりやすく解説したいと思います。

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

Cloudflare
ウェブサイトのセキュリティとパフォーマンス改善 Cloudflare では、インターネットが期待通りに機能するようサービスを提供します。CDN、DNS、DDoS対策などのセキュリティ関連など、各サービスの内容をご覧ください。
Amazon Web Services, Inc.
Amazon CloudFront(グローバルなコンテンツ配信ネットワーク)| AWS Amazon CloudFront は、低レイテンシーの高速転送によりデータ、ビデオ、アプリケーション、API をビューワーに安全に配信するグローバルコンテンツ配信ネットワーク (CDN)...
Jetpack
Free CDN for WordPress (Content Delivery Network) - Jetpack Use Jetpack CDN to accelerate your site with faster images and static files. Reduced load times for your readers, less bandwidth from your host.

他にも、APC Cache や PHP Cache、コードキャッシュなどキリが無いほどありますが、基本的には上記ほど効果があるものには出会えていません。

それらが不要というつもりもないのですが、これまでご紹介したキャッシュを使って高速化を試してみてから、さらに調べてみるのが良いと思います。

また、上記の内容で不足している場合には、下記のコンテンツを参考にしても良いかもしれません。

あわせて読みたい
wordpress(ワードプレス)の高速化!キャッシュ系プラグインとサーバー選定で、「遅い(重い)表示速度」... wordpress(ワードプレス)の高速化は、サイトの管理者であれば必須の要件です。 今回の記事では、キャッシュ系プラグイン(w3 Total Cacheなど)の設定手順や、画像の軽量...
@IT
とにかく速いWordPress 「とにかく速いWordPress」の連載記事一覧です。

なお、キャッシュではありませんが、FastCGI を導入できる場合はぜひ導入しましょう。下手なキャッシュより、よっぽど効果があります。少し副作用もあるみたいですが。。。<

WordPressでキャッシュが効果を発揮する順番は?

これからキャッシュを導入したい人は、どれから手をつけて良いか迷うことでしょう。

匠が調べた限りでは、下記の順で検討することをオススメします。

  1. ブラウザ・キャッシュ
  2. ページ・キャッシュ
  3. CDN

「導入しやすさ」と「導入効果」を考慮した場合です。

CDNを利用するには、契約しているサーバーとは別に別途サービス登録が必要です。また、DNSなどの知識が必要なため、ハードルはお高めです。しかし、補ってあまりあるほどに、高速化には絶大な効果があります。

他のキャッシュは効果がないわけではありません。しかし、それぞれのキャッシュとWordPressやデータベースの構造をキチンと理解しないと、効果を出すのが難しいと実感しています。

また、同じ名前のキャッシュであれば、WordPressで重複して使っても効果がないです。

むしろエラーが出たり、上手く表示されなくなったりすることもあるので、注意が必要です。

そのため、異なるプラグインやCDNサービスを複数導入する場合は、同じ名前のキャッシュ機能があれば、要注意です。どのプラグインまたはサービスで有効にするか、しっかり意識した方が良さそうです。

何か不都合が起こったら元に戻せる状態にして、ちょっとずつ有効にしていくのがオススメです。

WordPress キャッシュ機能の利用チェックシート

これからキャッシュを利用する人、または 今後利用される方は下記を埋めてみましょう。

WordPressキャッシュ 利用チェックシート

機能種別プラグイン名/サービス名など
ページ・キャッシュ 
ブラウザ・キャッシュ 
オブジェクト・キャッシュ 
データベース・キャッシュ 
Transit API 
CDN 

例:いつもの匠 の WordPressキャッシュ利用状況

この機能執筆時点ですが、当サイトのキャッシュ利用状況は下記の通りです。

機能種別プラグイン名/サービス名など
ページ・キャッシュKusanagi (bcache + fcache) + Cloudflare(ページキャッシュ設定)
ブラウザ・キャッシュCocoonテーマの高速化機能
オブジェクト・キャッシュW3 Total Cache
データベース・キャッシュW3 Total Cache
Transit APIW3 Total Cache
CDNCloudflare

これ以外のキャッシュはあまり効果が見られなかったので、当サイトでは利用していません。

これは余談ですが、W3 Total Cache + Cloudflare で殆ど機能は網羅できてしまうのですが、なぜか Kusanagi や Cocoonテーマの方が速く感じるキャッシュがいくつかありました。そのため、少々面倒ですが、それぞれ機能ごとに使い分けています。

ここまでやる必要があるのかは甚だ疑問ではありますけどね。

キャッシュではないWordPressの高速化の機能

WordPressの高速化を語るとき、下記のような機能がよく説明されます。

  • Minify
  • スクリプト結合
  • 圧縮転送
  • スクリプトの遅延読み込み
  • スクリプトのフッター移動

これらはキャッシュとは直接関係しません!

誤解をしないように、ということもありますが、これらはキャッシュとの併用しても問題ないと考えて大丈夫です。基本的には。

WordPress高速化の参考情報

今回の記事を執筆するにあたって、下記の情報ソースも読んでみました。

書籍

全てが直結するわけではありませんが、こういう技術に興味のある方やWordPress/Webサイトを仕事にされる方は、ぜひ読まれると良いのではないでしょうか。

著:久保田 光則
¥2,801 (2023/05/26 06:40時点 | Amazon調べ)
\ Amazonタイムセール祭!最大12%ポイント還元/
Amazonで探す ▶
著:Jeremy L. Wagner, 監修:武舎 広幸, 監修:阿部 和也, 監修:上西 昌弘, 翻訳:武舎 広幸, 翻訳:阿部 和也, 翻訳:上西 昌弘
¥3,300 (2023/05/26 06:40時点 | Amazon調べ)
\ Amazonタイムセール祭!最大12%ポイント還元/
Amazonで探す ▶
著:Steve Souders, 著:スティーブ サウダーズ, 翻訳:武舎 広幸, 翻訳:福地 太郎, 翻訳:武舎 るみ
¥1,980 (2023/05/26 06:40時点 | Amazon調べ)
\ Amazonタイムセール祭!最大12%ポイント還元/
Amazonで探す ▶

サイト

どちらもすごく参考になるけど、浅すぎたり深すぎたりして思う粒度ではなかったので、当ページを書くことにしました。

たぶん、そのまま内容をパクったりはしていないと思います。

Capital P
WordPressキャッシュプラグインを選ぶために知っておくべきこと - オピニオン - Capital P - WordPressメデ... WordPressはPHPアプリケーションであるため、キャッシュプラグインがよく利用される。多くのキャッシュプラグインは「高速化」という言葉と一緒に紹介されることが多いため...
情報科学屋さんを目指す人のメモ
Cloudflare CDNでキャッシュされないファイルとWebサーバが落ちたときの挙動について Cloudflareは、ウェブサイトをCDN経由で配信できるようになるサービスで、このブログでも現在利用中です。 今年の前半に一度利用したのですが、そのとき発生した問題が解...
バズ部
WordPress高速化|1秒前半で表示させるための8つ+3つの方法を解説 WordPressの数少ない欠点の一つは、サイトの表示速度が遅くなりがちなことだ。サイトの表示速度が遅いとユーザビリティが低下し、SEOにも悪影響を与えかねない。本記事では...
プラスα空間
WordPress+CloudFlareに3つのルールで劇速に(CloudFlareプラグインの使い方)[追記あり] | プラスα空間 ついに、PageSpeed Insightsで、モバイル、パソコンとも速度項目で100点を出せるようになりました。これはすごい。 次の手順で設定します。 CloudFlareプラグ...
Qiita
GTmetrixのスコアを限界まで上げたいならCloudFlareを使おう - Qiita 注意 本投稿は、【GTmetrixのスコアを限界まで上げたいならCloudFlareは使うな - Qiita】の再検証結果について言及しています。 本投稿には、GTmetrixの評価を上げる方...
Qiita
キャッシュについて整理 - Qiita キャッシュとは 使用頻度の高いデータを高速な記憶装置に蓄えておくことにより、いちいち低速な装置から読み出す無駄を省いて高速化すること。また、その際に使われる...
Qiita
WordPressで3000万PV/月のサイトをさくらのクラウドに構築した話 - Qiita 今回のサイトを含め、WordPressでのサイト構築Tipsをこちらで更新中です。 http://qiita.com/yousan/items/c925f0a241be02a55292 はじめに 一日のPVが100万、月の300...
Qiita
実際にKUSANAGIで結構なアクセス数のサーバを運営してこれやってるよっていうこと - Qiita はじめに KUSANAGI Advent Calendar 2016 四日目の記事です。@yousanといいます。 仕事でKUSANAGIを使ったサーバ構築、保守を行っています。 この記事では普段KUSANAGI...
Qiita
PageSpeed Insightsで100点を取るためにやったこと - Qiita はじめに 内部SEOとして、PageSpeed Insightsで高得点をとる……なんて話を昔から、チラホラ聞きます。 ページ速度がSEOにどれほどの影響があるのかはわかりませんが、ペ...

WordPressをキャッシュで高速化を理解した後は?

高速化の道はここで終わりではありません。

こちらにあるように、レンダリング(描画処理)など改善できるところはいくつもあります。

Qiita
Webページの高速化/最適化まとめ - Qiita おはこんばんちは、渋谷でお掃除してる人です。 はじめに 自社サービス、ランディングページ、企業ホームページのようなWebサイト(Webページ)において何が一番大切か...

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

Qiita
実際のところ「ブラウザを立ち上げてページが表示されるまで」には何が起きるのか - Qiita 9月15日(土) DNSについて追記しました。バックエンド?今はクラウドがきっと上手くやってくれるので深く考える必要は無いんですよ(知らないので書けません😔) 問題のツ...

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

この記事の著者はこちら