概要
Kinstaを利用する上で重要な機能を担うKinstaキャッシュ機能について細かくご紹介します。Kinsat公式サイトにはKinstaキャッシュ関連において数多くのページが存在しておりますが、この記事ではそれらをギュッと1ページにまとめながら重要な要素をかいつまんで説明したいと思います。
WordPressとキャッシュの関係
WordPressを運用していく上で誰もが直面する「Webページの読み込み速度問題」。WordPressはその作りからページ速度が遅延する症状が発生しやすいです。プラグインには数多くのキャッシュ関連のものが存在し、少しでも読み込み速度を改善しようと利用者は多くのプラグインをインストールする事になります。しかしKinstaを利用する場合キャッシュ系プラグインはもう必要ありません。(Kinstaを利用する上ではキャッシュ系プラグインのアンインストールが推奨)
圧倒的なページ読み込み速度が何よりも魅力であるKinsta。その速度に対して大きく貢献しているのがKinstaが提供するキャッシュ機能です。
その名も「Kinstaキャッシュ」です。
Kinsta キャッシュ
Kinsta キャッシュとは以下4種類のキャッシュの総称になります。
特に重要になるのが後半3つの「ページキャッシュ・CDNキャッシュ・Edgeキャッシュ」です。
- バイトコードキャッシュ
- オブジェクトキャッシュ
- ページ(サイト)キャッシュ
- CDNキャッシュ
- Edgeキャッシュ
本家Kinstaより少し短めに解説いたします。
バイトコードキャッシュ
PHPプログラムのキャッシュ。
バイトコードキャッシュとはPHPプログラムのコンパイルの再利用です。WordPressはPHP言語で構築されており、サイト内の各ページにアクセスする度にPHPのプログラムをコンパイルし、訪れたユーザに画面(HTML)を返却しています。そこでバイトコードキャッシュを利用する事で1度コンパイルした結果を保存しておき次回移行、再利用することでコンパイルにかかる処理負担をスキップさせています。
オブジェクトキャッシュ
SQL結果のキャッシュ
WordPress上のページにアクセスすると、画面に表示するための内容を事前にデータベースから取得します。そのデータベースへの問い合わせ内容の結果をキャッシュし、次回から再利用することでデータベースへの問い合わせ負荷を減らすことが可能となります。
ページ(サイト)キャッシュ
HTMLのキャッシュ
ページHTML全体をキャッシュすること。バイトコードキャッシュやオブジェクトキャッシュよりも、もっと前段に位置します。表示速度は大幅に向上します。「nginx factcgi cache module」を利用し1時間毎にキャッシュは失効します。「MyKinsta > ツール > サイトキャッシュ」から失効時間を変更可能です。※デフォルトは1時間毎に失効します。
CDNキャッシュ
静的ファイルキャッシュ。
Kinstaでは主にアセットファイル(jpg, pdf, css などのファイル形式で終わるファイル)がCDNキャッシュの対象になります。またCDNとして「Cloudflare」を利用しておりKinstaを契約すると追加料金なしで利用できることになります。CDNで利用されるサーバは世界260箇所以上に点在しているため、各地域毎に最適なサーバからユーザにページを返却することが可能になります。例えば全ページをCDNでキャッシュするようになると、サーバにアクセスが来なくなり大量のアクセス時にもCDN上にてリクエストを捌くことが可能になります。(デフォルトでキャッシュされるファイル一覧はこちら)
Edge キャッシュ
こちらは先ほど出てきた「ページ(サイト)キャッシュをより強化させる」イメージです。ページキャッシュではサーバサイド上にてHTMLキャッシュを行う機能ですが、EdgeキャッシュはそのページキャッシュのHTMLキャッシュをCDN(Cloudflare)によって世界中に分散させます。その結果、ページのレスポンスは高速化され、サーバへのリクエスト数も軽減されます。
Cloudflare
「CDNキャッシュ」と「Edgeキャッシュ」どちらもCloudflareが利用されていると説明しましたが、わかりやすくいうと
- Kinsta CDN… 静的資産のキャッシュwith Cloudflare
- Edge キャッシュ…HTMLキャッシュ with Cloudflare
という具合です。詳細についてはエッジキャッシュ導入でページを最大80%高速化
Cloudflareの設定を自分で管理したい場合
Kinsta CDN のCloudflare 設定よりもっと細かなキャッシュ設定を行いたい場合は、自分で用意したCloudflareアカウントに切り替えることが可能です。
参考:Kinstaサイトを独自のCloudflareアカウントに切り替える
ブラウザで実験
HTMLページのレスポンスヘッダ
ブラウザでKinstaのページのヘッダ情報をデベロッパーコンソールを利用して「レスポンスヘッダ情報」確認してみます。そこにはキャッシュ関連のいくつかのヘッダ項目が存在します。ページ(サイト)キャッシュに該当します。この例はHTML(Doc)ページへのアクセス例ですので、Kinsta キャッシュとEdgeキャッシュが該当するキャッシュ機能になります。
今度はTTFBを確認します。※ブラウザがサーバーからのデータの最初の1バイトを受け取るまでにかかる時間のことです。
なんと初回アクセス時には 491ms かかっていたものが、Edgeキャッシュ経由だと 29 ms まで短縮されております。実に16倍!の高速化になります。
今度はKinsta CDN キャッシュのレスポンスヘッダを確認してみます。
初回アクセス時にはCDNキャッシュ関連のレスポンスヘッダは存在しませんでしたが、2回目以降からは Ki-Cf-Cache-Status 等のKinsta CDN キャッシュHITの結果が確認できました。Cf-Cache-Status: HIT, X-Cf-Cache-Status: Hit と2種類ありますが、Kinsta CDN の Cloudflare 経由でレスポンスしていると考えてOKです。
キャッシュのクリア
ページ(サイト)キャッシュとCDNキャッシュと2種類それぞれのキャッシュクリア方法をご紹介します。また後述しますがKinstaがデフォルトでWordPressに導入している「Kinsta MUプラグイン」によって、固定ページや投稿を更新するたびに、サイトの重要な部分のキャッシュが自動的にクリアされる仕組みになっています。
ページ(サイト)キャッシュのクリア
Kinstaでは別名「フルページキャッシュ」と呼ばれてもいます。サイトに変更を加えた場合や任意のタイミングでキャッシュをクリアし最新内容に情報を更新します。キャッシュクリア対象の項目はページ(サイト)キャッシュ。「My Kinsta > ツール > サイトキャッシュ」からクリアする事が可能です。※サイトキャッシュをクリアすると同時にエッジキャッシュもクリアされます。
CDN キャッシュのクリア
静的アセットをキャッシュするKinsta CDNのキャッシュクリアは「My Kinsta > CDN > CDNキャッシュのクリア」から行います。
Kinsta MU プラグイン
毎回 MyKinstaにログインしてキャッシュクリアをしなくても、WordPress管理画面上からもキャッシュクリアが可能です。それが「Kinsta MUプラグイン」であり「Kinstaにて新規WordPressを作成」もしくは「サイト移行申請」にて構築した場合はデフォルトでプラグインとしてインストールされております。
ここでは、以下の種類のキャッシュ削除が選択肢として存在します。
- Clear All Caches
- Clear Site Cache
- Clear Object Cache
- Clear CDN Cache
自動キャッシュクリアのカスタム設定
サイトが更新されるたびに、並行してキャッシュ削除したい独自の設定も追加できます。それが Custom URLs to purgeになります。
キャッシュの除外
キャッシュはWordPressのページ読み込み速度の高速化という素晴らしい効果を提供してくれますが、それと同時にいくつかの問題点も事前に把握しておく必要があります。特に問題になりやすいポイントとして「キャッシュしたくないページ」の場合になります。
例えば「ECサイト」の場合、商品のページ内容がキャッシュされてしまうと厄介です。在庫数や割引キャンペーン情報がキャッシュしたその時から変化しなくなってしまいユーザに誤った商品情報を提供してしまう事になり大問題です。
ページ(サイト)キャッシュの除外設定
現時点(2023.11)においてページ(サイト)キャッシュの除外設定はMyKinsta上に用意されておりません。特定のページやURLをキャッシュから除外するには、Kinstaのカスタマーサポートまで連絡する必要があるようです。
CDNキャッシュの除外設定
JS・css・画像ファイルなどの静的ファイルはCDNキャッシュの対象です。これらのうち除外したい設定が存在する場合は MyKinsta から可能です。
HTMLページキャッシュの除外
特定のページやURLをキャッシュから除外するには、Kinstaのカスタマーサポートに連絡し設定の依頼をしてください。柔軟にKinstaサポートが対応してくれます。
環境のよるキャッシュ動作の違い
Kinsta では MyKinstaから簡単にLive環境以外の環境を作成・複製できます。これらの別環境においてはページキャッシュがデフォルトで無効になっております。もちろん理由はデバッグ作業に集中するためにキャッシュクリアの手間を取らせないようにするためです。
キャッシュ有効にもできる
作成した環境上でもキャッシュを有効にすることが可能です。実際に有効にしたあとの表示速度を測定するために利用できます。
キャッシュの分析
ここまでKinstaキャッシュについて細かく説明してきましたが、実際にKinstaにてサイト運用していく上で気になるポイントは「どれくらいキャッシュの恩恵を受けているのか」になります。MyKinstaにはそれらをグラフで確認できる専用の分析ページが用意されています。[MyKinsta > 分析 > キャッシュ]
キャッシュ推移
「今月・過去30日・過去7日間・過去24時間」と期間を選択しながらキャッシュ推移を確認できます。並行してアクセス数過多も確認できますので便利です。
キャッシュ比率
こちらも選択した期間に合わせた比率を円グラフでわかりやすく確認できます。
- HIT:Kinstaキャッシュから配信されている。
- ページ(サイト)キャッシュとEdgeキャッシュが利用されている証拠。
- BYPASS:設定等の影響によりキャッシュを利用しなかったためサーバへアクセスが到達。
- ※例えば Kinsta では管理画面のログインURL(/wp-login.php)はキャッシュされません。
- MISS:コンテンツがキャッシュされていない状態のためサーバへアクセスが到達。
- 2回目移行のリクエストでHITに変化するはずです。
- EXPIRED:キャッシュの有効期限切れによりサーバへアクセスが到達。
- 新たなキャッシュ有効期限がセットされる。
リクエスト数上位のキャッシュバイパス一覧
このリストでは「バイパスされているキャッシュ一覧」のためキャッシュ適用されていない一覧という事になります。
なぜこのようなリストが用意されているかというと「キャッシュをバイパスする必要があるかどうかを確かめるため」になります。キャッシュがバイパスされているとサーバまでリクエスト数が到達することになるため、サーバリソースを使用してユーザにレスポンスしている事になります。
その上でこのバイパスリスト上位に表示されているリクエストは「本当にバイパス設定のままで良いのか」を判定するための材料として利用するような使い方になります。
まとめ
上記のとおりKinstaが提供するキャッシュには数多くの設定があり既に細かくチューニングまでされていることが理解できます。これらを自前で設定・チューニングするとなるとキャッシュに関する知識だけでなくWordPress側における「キャッシュ除外すべき箇所」等の把握まで知識として必要となってきます。恐らく最適解を見つけるのにかなりの時間を要することが考えられます。
上記の通りKinstaでは既にWordPressに特化した最適なチューニングが施されているため1つ1つの細かく設定せずとも、本来行うべき「WordPressのコンテンツ制作・更新にのみ注力」する事が可能になります。そういった意味でもフルマネージドに該当するサービスとなります。
その他
今回本記事をKinstaキャッシュについて理解を深めるためにKinsta サポートのリアルタイムチャットにてさまざまな質問をさせて頂きました。1つ1つ丁寧に教えてくださり本当に感謝です。
もしKinstaについて少しでもご興味をお持ちでしたら、日本公式パートナーであるMOOBONまでお問い合わせください。どんな質問にも喜んで回答させて頂きます。
お問合せ先:info@moobon.jp 担当:南 or 西川