Webパフォーマンスなら、WordPressキャッシングはどうしても実施すべき対策の一つでしょう。WordPressは大好きですが、特に完全に静的なウェブサイトと比較すると、最速のプラットフォームではありません。この理由の一つは、速度の宣言のどうしてもあるPHPで構築されていることです。PHP 7で大幅な改善が見られましたが、それでもウェブサイトを適切にキャッシングする必要があります。

最高のキャッシングプラグインを調査しなくてもよければ、いいと思いませんか?私たちKinstaはキャッシングを対応いたしますので、お客様にビジネスの成長に集中いただけます。

WordPressキャッシングとは?

キャッシングとは、あるリクエストのリソースを保存し、今後のリクエストに際してそのリソースを再利用するプロセスのことです。基本的には、ページビューを生成するのに必要な作業量を減らします

何故キャッシュを使用した方がいいかと言うと、キャッシュを使用すると、WordPressウェブサイトがより速くなり、ウェブサーバーの負荷が軽減するからです。そのため、すべてのウェブサイトができるだけ多くのキャッシュを使用した方が良いでしょう。さらに、CDNキャッシングの場合は、静的リソースがWordPressホスティング会社外で保存されることにより、ページビューに必要なサーバー帯域幅の量も削減します。

KinstaならWordPressのキャッシュプラグインは不要!

そうですね。Kinstaのお客様は、複雑で使用し難いキャッシングプラグインを使わずにすみます。当社は既にさまざまな種類のキャッシュを実行しています。「2020年の最高のキャッシングプラグイン」を検索せずに、より重要な仕事集中することができます。

Kinstaでは、ソフトウェアレベルまたはサーバーレベルで自動的に行われる次の4種類のキャッシュを利用しております。

Kinstaに移行するだけで読み込み時間が大幅に改善したというお客様も多いです。そのすべては以前にキャッシュプラグインを使用したWordPressウェブサイトです。以下は、キャッシュプラグインがインストールされていないくても、パフォーマンスが212.5%向上したサイトの一例です。

KinstaでのWordPressの読み込み時間

KinstaでのWordPressの読み込み時間

上記の読み込み時間の減少には他にも原因がありましたが、キャッシングは大きく影響してきました。すべてのキャッシュプラグインが悪いと言っているわけではありません。実際のところ、ユーザーがキャッシュプラグインを正しく設定していないためにWordPressウェブサイトが遅くなる場合が多いです。W3 Total Cacheを設定しようとしたことがありますか? 非常に分かりにくいです。

お客様の評価

ここで、Kinstaに移行してきたお客様の評価を示します。これらのお客様はすべて、キャッシュプラグインの使用を止めました。

WordPressキャッシュの種類

さて、Kinstaが採用しているWordPressキャッシュの各種類について説明します。キャッシュの各レイヤーの概要を理解しておくことは、キャッシュに関連する異常の処置にも役立ち、ウェブサイトがスムーズに機能することも保証します。

バイトコードキャッシュ

バイトコードキャッシュは、同じコードが次回使用されるときにコンパイル手順をスキップできるように、コンパイル済みのPHPコードを保存します。Kinstaでは、PHP 7.2、7.3および7.4でもOPcacheを有効にしています。(今後、当社のプラットフォームでリリースされる新しいバージョンのPHPでも有効にする予定です。)

PHPファイルやスクリプトが処理されるときは、最初に機械可読なオペコードにコンパイルする必要があります。OPキャシュが、変換済みのオペコードを保存することにより、該当のファイルまたはスクリプトが次回に必要になったときにPHPがコンパイル手順をスキップできるようにします。OPキャシュを使用すると、PHPのパフォーマンスが大幅に改善します。ただし、PHPファイルの変更はすぐには反映されません。このため、KinstaのステージングサイトではOPキャシュは無効になっています。

OPキャシュがPHPアプリケーションをスピードアップする方法についてはこちらをご参照ください。

オブジェクトキャッシュ

オブジェクトキャッシュはデータベースクエリの結果を保存し、次回その特定のデータが要求されるとデータベースにクエリを実行せずにキャッシュから配信できます。これによりPHPの実行時間が短縮され、WordPressのデータベースの負荷が減ります。

WordPressには、WP_Object_Cacheという組み込みのオブジェクトキャッシュがあります。ただし、このオブジェクトキャッシュには、1回のページ読み込用のオブジェクトのみが保存されます。キャッシュの目的は、1回のページ読み込み中にデータベースが複数回同様にクエリされないことです。ただし、キャッシュされたオブジェクトは、1回のページ読み込みの後は使用されません。たしかに便利なWordPress機能ですが、複数のページ読み込みにわたって使用できるオブジェクトキャッシュの方はより役立つでしょう。

キャッシュされたオブジェクトを複数のページ読み込みに再利用するのに、WordPressの組み込みオブジェクトキャッシュの代わりに外部ソリューションを使用します。これを行うには、/wp-content/ディレクトリにキャッシュスクリプトを追加します。W3 Total Cacheなどのプラグインベースのオブジェクトキャッシュオプションがあります。

Kinstaのお客様には、Redisアドオンも購入して、PHP 7.2、7.3または7.4と一緒にインストールいただけます。Redisは、データベース、キャッシュ、およびメッセージブローカーとして使用されるオープンソースのインメモリデータベースです。詳細については、当社のRedisを永続化されたキャッシュとして使用する方法に関する記事をご確認ください。

ページキャッシュ

ページキャッシュがページのHTMLを完全に保存するため、次回のリクエストの際にWordPressがページを生成しなくてもページビューを生成できます。

WordPressウェブサイトが読み込まれるとき、WordPressは多数のPHPファイルを処理して、データベースに何度も照会する必要があります。常に更新されるページでない限り、これは無駄です。各ページを一度だけ生成してから、そのページを保存し、今後の訪問者に配信した方がはるかに効率的です。これはページキャッシュの機能です。

ページキャッシュの利点は次のとおりです。

Kinstaのサーバーでは、ページキャッシュにnginx fastcgi cache moduleを使用しています。デフォルトで1時間ごとに期限切れになるように設定されていますが、延長または短縮をご希望のお客様にいつでもお問い合わせいただけます。頻繁に変更されないサイトの場合、キャッシュの有効期限を長くすることはパフォーマンスを向上します。

ページキャッシュは、標準のWordPress、BuddyPress、WooCommerce、およびEasy Digital Downloadウェブサイトで何も設定しなくてもすぐに機能するように設定されています。触らなくても結構です!WordPressウェブサイトを起動するだけで、ページキャッシュが始まります。ただし、カスタマイズされたURL構造を使用する場合や、通常のWordPressセットアップから大きく外れている場合は、カスタマイズが必要になる場合があります。

デフォルトでは、Kinstaのステージングサイトではページキャッシュが無効になっています。場合によっては、ステージングでページキャッシュを有効にすると、テスト目的で役立ちます。ステージングサイトのページキャッシュを有効にするには、MyKinstaダッシュボードにアクセスしてください

CDNキャシュ

CDNキャッシュは、ホストサーバーの場所から地理的に離れた場所にいるユーザーのために配信をスピードアップするようにウェブサイトのファイル(JavaScript、CSS、メディアファイルなど)をコンテンツ配信ネットワークに保存します。誰かがウェブサイトにアクセスしようとするときに、ファイルはウェブサイトが実際にホスティングされるサーバーからではなく、CDNから配信されます。CDNを使いべき理由についてはこちらをご参照ください。

コンテンツ配信ネットワーク(CDN)には、2つの主な利点があります。

CDNには、単にCDNであるものと、セキュリティ機能が付くものという2種類があります。例えば下記のものがあります。

前者は、ウェブサイトのリソースへのアクセスができるCDN URLを作成することにより設定されます。有効化の方法は、CDNごとに異なります。 基本的な考え方は、静的リソースのURLをCDN URLに変更することにより、リソースがCDNから配信されるようにすることです。標準のCDNは、JS、CSS、メディアファイルなどの静的ファイルのみをキャッシュする場合が多いです。Kinsta CDN は、KeyCDNをベースにした標準CDNです。

後者はフルプロキシサーバーとして機能します。つまり、すべてのリクエストは、Kinstaのサーバーに到着する前にプロバイダーのサーバーを経由する必要があります。これは、CDNプロバイダーはウェブサイトのDNSを完全に制御できるように、CDNプロバイダーのネームサーバーを使用することで有効になります。これにより、プロバイダーは、不正なIPからのトラフィックを除外したり、DoSやDDoS保護を提供したり、CDNにフルページキャッシュを保存したりするなど、標準のCDNではできないことができるようになります。

上級のCDNキャッシング

CloudflareやSucuriなどのプロキシサーバーCDNをご利用の場合、CDNに完全なページキャッシュを作成することができます。CloudflareやSucuriなどのCDNを使用してページ全体のHTMLをキャッシュすると、本来だとサーバーが実施する処理が完全にオフロードされるため、トラフィックの大幅な増加が見込まれるウェブサイトにとって優れたソリューションになります。

Kinstaのキャッシュレスポンスヘッダー

該当のページがKinstaのキャッシュから配信されているかどうかを確認するには、HTTPレスポンスヘッダーを調べます。KinstaはX-Kinsta-Cacheヘッダーを追加します。 キャッシュされていないページへの最初のリクエストでは、以下に示すようにMISSが表示されます。

HTTPレスポンダーヘッダーキャッシュ

キャッシュヘッダーのMISS

同じページへの2回目のリクエストでは、X-Kinsta-Cacheヘッダーの値はHITになります。つまり、キャッシュから配達されています。

キャッシュヘッダーのHIT

キャッシュヘッダーのHIT

また、当社の「WordPressでもGoogle PageSpeed Insightsで満点を取得する方法」という記事を読んだことのある方は、Kinstaには追加のサーバーレベルの最適化機能があるため、次の異常を自動的に処理されることもご存じでしょう。

たとえば、当社のテストサイトでは、キャッシングプラグインを有効にせずにPageSpeed Insightsで満点を取得しています。KinstaではWordPressキャッシュがサーバーレベルで完全に処理されます。

pagespeed insights caching

PageSpeed Insights

Kinstaのキャッシュの設定

さて、Kinstaでキャッシュを管理する方法について知りたがっている方もいるかもしれません。もちろん、異常処置を行うときなど、キャシュをクリアする場合があります。そのとき、MyKinstaダッシュボードでキャッシュをクリアするか、Kinsta MUプラグインを使用するかご選択いただけます。

WordPressキャッシュをクリアする

フルページキャッシュがMyKinstaダッシュボードで手動でクリアできます。該当のウェブサイトをクリックしてツールをクリックし、「キャッシュをクリア」ボタンをクリックするだけです。

WordPressキャッシュをクリアする

WordPressキャッシュをクリアする

 

CDNキャッシングは、ウェブサイトのファイル(JavaScript、CSS、メディアファイルなど)をコンテンツ配信ネットワークに保存して、ホストサーバーの場所から離れているユーザーへの配信を高速化します。あるユーザーがウェブサイトにアクセスしようとすると、上記のファイルはウェブサイトをホストしているサーバーから配信されるのではなく、CDNから配信されます。CDNを使用する理由については、こちらをご覧ください

Kinsta MUプラグイン

2番目のオプションは、Kinsta MUプラグインを使用することです。このプラグインは本来だとキャッシュプラグインですが、サーバーレベルで動作するため、典型的なキャッシュプラグインではありません。

Kinsta MUプラグインは、当社がホストするすべてのウェブサイトにデフォルトでインストールされ、WordPressの管理ダッシュボードの左側からアクセスできるようになっています。ウェブサイトの該当のページのキャッシュをインテリジェントにクリアするために使用されます。本プラグインは、ウェブサイトが当社の環境でスムーズに機能することを確保するため、必須です。また、ページキャッシュはデフォルトで1時間ごとに期限切れになることも忘れないでください。

Kinsta MUプラグイン

Kinsta MUプラグイン

プラグインを使用すると、WordPress管理バーでキャッシュをクリアできます。MyKinstaダッシュボードにアクセスする必要がないため、おそらく本プラグインを使用する最大の理由の一つでしょう。つまり、ウェブサイトを離れずにできます。

WordPressツールバーでキャッシュをクリアする

WordPressツールバーでキャッシュをクリアする

または、カスタムキャッシュルールを設定することもできます。ウェブサイトのコンフィギュレーションにより、追加のキャッシュルールが必要になる場合があります。更新される度に、ウェブサイトをクリアするカスタムパスを追加することもできます。

キャッシュの対象外にしたい特定のページまたはURLがある場合は、サポートチームまで連絡いただけます。

Kinstaのステージング環境

デフォルトでは、Kinstaのステージング環境ではページキャッシュが無効になっています。これにより、編集のたびに手動でキャッシュをクリアする必要がなくなり、WordPressサイトの開発とデバッグが簡単になります。必要に応じて、ステージング環境でページキャッシングを有効にして、サイトを本番サイトに公開せずにキャッシュページの正確なスピードテストを行いっていただけます。

ステージング環境でページキャッシュを有効にするには、MyKinstaの「サイト」> 「ツール」に移動し、「キャッシュを有効にする」ボタンをクリックします。ステージングでキャッシュが有効になっている場合、「キャッシュのクリア」ボタンを使用してキャッシュを削除できます。

ステージングサイトのページキャッシュを有効にする

ステージングサイトのページキャッシュを有効にする

 

Kinstaのキャッシュの分析データ

WordPressウェブサイトのキャッシュが適切であるるかをMyKinstaの分析機能で詳しく調べることができます。キャッシュコンポーネントスタックを使用すると、HIT、BYPASS、MISS、またはEXPIREDなどのリクエストの状態を確認できます。過去24時間、7日、または30日でデータをフィルタリングできます。

Kinstaのキャッシュコンポーネントスタック

Kinstaのキャッシュコンポーネントスタック

キャッシュコンポーネントのグラフではキャッシュ率が簡単に確認できます。キャッシュから配信するほど良いです。

Kinstaのキャッシュコンポーネントのグラフ

Kinstaのキャッシュコンポーネントのグラフ

キャッシュバイパスのトップリストでは、キャッシュから配信されていないリクエストが確認できます。通常、CRONジョブ、admin-ajaxリクエスト、電子商取引チェックアウトページ、クエリ文字列、UTMパラメータなどがあります。

WordPress top cache bypasses

WordPressのキャッシュバイパスのトップリスト

404ページのキャッシング

404ページはリソースを数多く使ってしまう場合があります。想像以上に頻繁に404エラーが発生するWordPressウェブサイト、特に大規模な会員サイトが多いです。ページの場所を変更してリダイレクトを追加するのを忘れたり、ソーシャルメディアでシェアしているものに誤ったリンクがあったりします。つまり、404ページが発生する原因は多いです。これらのページには、データベースにアクセスする代替検索結果を表示するためのクエリもある傾向があります。

WordPressウェブサイトのパフォーマンスを向上させるために、Kinstaは404ページを15分間キャッシングするようになりましたX-Kinsta-Cacheヘッダーの値はHITになります。つまり、キャッシュから配達されています。以前は404が発生したページを作成すると、キャッシュはすぐに消去されます。

当社のMyKinsta分析ツールを使用すると、404エラーの正確な数を確認することができます。

404エラーコードの内訳

404エラーコードの内訳

なお、404リクエストすべてをキャッシングしませんので、ご注意ください。404リクエストは、404ページが表示されるPHPページからのものと、存在しないか移動されているファイルまたは画像からのものの2種類があります。404ページがキャッシングされますが、不足しているファイルまたは画像への404リクエストが異なる手段で処理されます。

したがって、原因を特定する際に「404エラーのトップリスト」を使用することもできます。

キャシュされた404リクエストページ

キャシュされた404リクエストページ

もちろん、Google Search Consoleで404エラーを確認するか、404エラーを記録するRedirectionなどのサードパーティプラグインをインストールすることもできます。ただし、これらのプラグインはパフォーマンスにも影響することにご注意ください。サーバーレベルのツールを使用した方がはるかにいいです。

可能な限りデータベースへのクエリを回避する単純な404テンプレートを作成してください。

POSTリクエストとBYPASSキャッシュ

当社の分析ツールまたはキャッシング分析の結果ができるだけ正確であることを目指しております。パフォーマンスの課題をトラブルシューティングする際には、おそらく誰でもキャッシングのHIT率をできるだけ高くすることを検討しているでしょう。そのため、今回はPOSTリクエストを分析結果のレポートに追加しました。

非常に特殊な設定を除いて、POSTリクエストはキャッシュできません。これらのリクエストに対してはX-Kinsta-Cacheの値がBYPASSになります。POSTリクエストはブログの投稿またはWordPressの投稿のことではありません。(これらはキャッシュ可能です。)POSTリクエストは、サーバーにデータを送信するためのものです。たとえば、ウェブフォームを送信したときに送信されるデータなどのことです。

まとめ

WordPressキャッシュと、Kinstaで使われている4種類のキャッシュ(バイトコードキャッシュ、オブジェクトキャッシュ、ページキャッシュ、CDNキャッシュ)の概要を少し理解できたかと思います。

従来のWordPressキャッシュプラグインを試験したりするのにうんざりしている方に、基本設定のままでも高速なKinstaをお勧めします。5年連続でReviewSignalによるトップティアWordPressホスティングパフォーマンス賞を受賞したことに理由があります。そしてその理由はもちろん、当社のサーバーが超高速の読み込み時間のためにGoogle Cloud Platform上で微調整されていることです。当社のパフォーマンスににがっかりさせません。


この記事が面白いと思った方は、KinstaのWordPressホスティングプラットフォームも大好きでしょう。ウェブサイトをスピードアップし、当社のベテランのWordPressチームからの24時間365日のサポートを是非ご利用ください。Google Cloudを使用したインフラストラクチャは、自動スケーリング、パフォーマンス、およびセキュリティに重点を置いています。Kinstaの魅力をご案内させてください。当社のプランをご確認ください。