キャッシュミスとキャッシュヒット:それらが発生したとき(&キャッシュヒット率を上げる方法)

公開: 2022-05-04

しっかりとしたキャッシュポリシーを設定せずにWebサイトのパフォーマンスを最適化することは、流砂の上に家を建てようとするようなものです。

あなたは最高の材料と道具を使うことができます、しかしあなたの基礎がしっかりしていないとき、あなたはいつも何かがあなたの進歩を妨げるように感じるでしょう。

キャッシュポリシーは、Webサイトの卓越したWebパフォーマンスのバックボーンです。 適切なキャッシュシステムがあれば、サイトの速度を大幅に向上させることができます。

逆に、適切に機能するキャッシュ設定がないと、訪問者の要求によってキャッシュミスが発生し、ページの読み込み時間が遅くなります。

また、キャッシュミスは、次の行で取り上げるトピックの1つにすぎません。

  • キャッシングの簡単な紹介。
  • キャッシュミスとは何ですか?;
  • キャッシュヒットとは何ですか?;
  • キャッシュヒット率とは何ですか?それを計算する方法は?;
  • 良いキャッシュヒット率とは何ですか?;
  • キャッシュヒット率を上げる方法は?;
  • NitroPack-優れたキャッシュヒット率を達成するための最も簡単な方法。

さぁ、始めよう!

キャッシングの簡単な紹介

キャッシュのヒットとミスの世界を掘り下げる前に、キャッシングがどのように機能するか、キャッシングがどのような目的を果たすのか、そしてなぜそれが最高の速度最適化戦略と見なされるのかを理解することが不可欠です。

キャッシングを理解するには、一歩下がって、訪問者がサイトをリクエストしたときに舞台裏で行われるプロセス全体に従う必要があります。

Webサイトは、HTMLドキュメント、JavaScriptおよびCSSファイル、画像などで構成されています。これらはすべて、オリジンサーバーに保存されています。 誰かがあなたのウェブサイトにアクセスしたいとき、彼らのブラウザはあなたのオリジンサーバーにリクエストを送信し、オリジンサーバーは必要なすべてのファイルを含む応答を送り返します。

Webのしくみ

サイトのファイルを同時に要求する訪問者が10人いる場合、問題はなく、サーバーはそれらを非常に簡単に処理できます。

ただし、このモデルは、10万人の訪問者がWebサイトにアクセスしたい場合には機能しません。

サーバーには、同時に処理できるリクエストの数に制限があり、その制限以降のすべてのリクエストはキューに入れられるため、訪問者の読み込み時間が長くなります。

列

そこで、キャッシングが登場します。

簡単に言うと、キャッシュとは、サイトデータ(HTML、CSS、JS、画像など)のコピーをWebキャッシュと呼ばれる別の場所に保存するプロセスです。

Webキャッシュは、ユーザーとオリジンの間の仲介役の役割を果たします。 そうすれば、それらのリクエストはキャッシュから提供され、サーバーから取得されることはありません。

キャッシング

その結果、ページの読み込みがはるかに速くなります。

キャッシング分類にはさまざまな種類があります。 ただし、この記事の目的と、キャッシュのヒットとミスがいつ発生するかを理解するために、最も一般的な2つのタイプであるブラウザーとプロキシのキャッシュについて説明します。


ブラウザのキャッシュ

各ブラウザには独自のキャッシュポリシーがあり、ユーザーのコンピュータにローカルにデータを保存できます。

これは、以前にアクセスしたページの読み込みを高速化するので便利です。 実際、ブラウザのキャッシュが、戻るボタンと進むボタンが魔法のように機能する主な理由です。

ブラウザのキャッシュ

残念ながら、ブラウザのキャッシュはデバイスごとの操作に制限されています。 ただし、その最大の利点は、ネットワークリクエスト全体を保存できることです。これにより、必須のネットワークになります。


プロキシサーバーのキャッシュ

プロキシキャッシュは、サーバーの負荷を軽減し、比較的高速なコンテンツをエンドユーザーに配信するのに役立ちます。 最良のシナリオは、プロキシキャッシングがブラウザキャッシングと連携して機能する場合です。

プロキシサーバーは世界中に分散しています。 これらは通常、CDN(コンテンツ配信ネットワーク)プロバイダーによって維持されます。

プロキシは、ユーザーとオリジンサーバーの間の仲介者です。 それらを使用して、さまざまな場所にコンテンツをキャッシュできます。そうすることで、コンテンツがユーザーに近くなり、遅延とネットワークトラフィックが削減されます。

CDNを使用

ブラウザのキャッシュとは異なり、プロキシサーバーのキャッシュはデバイスごとに制限されておらず、複数のユーザーに同時にコンテンツを提供できます。

それがキャッシングの要点です。 これは微妙なトピックであり、さまざまなキャッシングタイプの長所と短所、キャッシングルールの設定方法など、さらに多くのことが明らかになります。

しかし、それはこの記事の焦点では​​ありません。

トピックをさらに深く掘り下げたい場合は、私たちの記事-Webキャッシング101:HTTPキャッシングの初心者向けガイド(例、ヒント、および戦略)を確認してください。

または、YouTubeビデオをご覧ください。

今のところ、要求されたデータがWebキャッシュに見つからない場合は、遅延や問題が発生し始めることを覚えておくことが重要です。 これにより、キャッシュミスが発生します。


キャッシュミスとは何ですか?

キャッシュミスは、システム、アプリケーション、またはブラウザがキャッシュからデータを取得するように要求したが、その特定のデータが現在キャッシュメモリで見つからなかった場合に発生します。

キャッシュミスが発生すると、リクエストはオリジンサーバーに転送されます。

データがオリジンから取得されると、同じデータに対する同様の将来の要求を見越して、データがコピーされてキャッシュメモリに格納されます。

キャッシュミスが発生する理由は複数あります。

たとえば、特定のデータが最初からキャッシュされることはありませんでした。

あなたがeコマースサイトを持っていて、新しい製品ページを追加したとしましょう。 すべての画像、HTML、CSS、およびJavaScriptファイルは、誰も要求したことがないため、キャッシュメモリに追加されたことはありません。 つまり、最初の訪問者は、ページをロードするためにオリジンにリクエストを送信する必要があります。 最初のリクエストの後、データはキャッシュに転送され、キャッシュから提供されます。

キャッシュミスのもう1つの可能性は、キャッシュされたデータがある時点で削除されたことです。

繰り返しになりますが、そのシナリオにつながった可能性のあるいくつかのことがあります。より多くのスペースが必要だった、アプリケーションが削除を要求した、またはデータの存続時間ポリシーが期限切れになったなどです。

Time to Liveについては、この記事の後半で詳しく説明します。

理由が何であれ、真実は、すべてのキャッシュミスが待ち時間の延長、読み込み時間の遅延、ユーザーエクスペリエンスの低下、訪問者の不満につながるということです。

ただし、キャッシュヒットを100%達成する必要があるという印象を残したくありません。 それは現実的ではありません。

さらに、提供するコンテンツが常に最新であることを確認する必要がある場合があるため、キャッシュミスが必要になる場合があります。

たとえば、bbc.comのようなニュースWebサイトでは、最新ニュースを報告する必要があるため、ホームページのコンテンツを1日を通して数回変更できます。 この場合、キャッシュヒットは、読者がWebサイトの最新バージョンを表示せず、それぞれ最新のニュースを見逃したことを意味します。

したがって、キャッシュミスの発生には利点があります。

ただし、ニュースWebサイトがなく、コンテンツを定期的に変更しない場合は、キャッシュミスをできるだけ少なくし、キャッシュヒットをできるだけ高くすることを目指す必要があります。


キャッシュヒットとは何ですか?

キャッシュヒットは、要求されたデータがキャッシュから正常に提供されたときに発生します。

たとえば、ユーザーが販売する商品の画像を表示することになっている商品ページの1つにアクセスすると、ブラウザはこの画像のリクエストをキャッシュ(ブラウザまたはCDN)に送信します。 CDNのストレージに画像のコピーがある場合、リクエストによりキャッシュヒットが発生し、画像がブラウザに返送されます。


キャッシュヒット率とは何ですか?それを計算する方法は?

キャッシュヒット率は、キャッシュがストレージから正常に配信したリクエストの数を、合計で受信したリクエストの数と比較して測定します。

キャッシュヒット率が高いということは、ユーザーの要求のほとんどがキャッシュによって満たされていることを意味します。つまり、ユーザーの読み込み時間が短縮されていることを意味します。

次の式を使用して、キャッシュヒット率を計算できます。

キャッシュヒット率の式

ただし、ほとんどのCDNプロバイダーがこれを計算するため、これは必要ない場合があります。

NitroPackのダッシュボードには、次の情報も表示されます。

NitroPack CHR


良いキャッシュヒット率とは何ですか?

一般的な経験則として、 80%以上のキャッシュヒット率は、ほとんどのリクエストがキャッシュから処理されることを意味するため、良い結果です

静的Webサイトで80%未満のものは、非効率的なキャッシュポリシーを示します。

Cloudflareによると、世界最大のCDNプロバイダーの1つは次のとおりです。

「ほとんどが静的コンテンツで構成されている一般的なWebサイトでは、キャッシュヒット率が95〜99%の範囲で簡単に発生する可能性があります。」

NitroPackのグローバルキャッシュヒット率は90%です。 また、すべてのNitroPackユーザーの約70%が、80%以上のキャッシュヒット率を経験しています。


キャッシュヒット率を上げる方法は?

キャッシュミスの数を減らしてキャッシュヒット率を上げるために、特定の手順を実行できます。

1.Webサイトのニーズに基づいてキャッシュルールを設定します

cache-controlヘッダーを使用すると、コンテンツの配信を最適化するために、無数の異なるキャッシュルールを設定できます。

いくつかのルールは次のとおりです。

  • no-storeは、どのような状況でもリソースのバージョンを保存しないようにWebキャッシュに指示します。
  • no-cacheは、キャッシュされたコンテンツをユーザーに提供する前に、オリジンサーバーで検証する必要があることをWebキャッシュに通知します。
  • max-ageは、キャッシュが保存されたリソースを再ダウンロードまたはオリジンサーバーで再検証する前に保持できる最大時間(秒単位)を設定します。 その後、コンテンツは古いものとしてマークされます。
  • s-maxageはmax-ageとまったく同じことを行いますが、プロキシキャッシュに対してのみです。
  • privateは、プライベートキャッシュのみが応答を保存できることをWebキャッシュに通知します。
  • publicは、応答をpublicとしてマークします。 すべての中間キャッシュは、この命令でマークされた応答を格納できます。

キャッシュ制御ヘッダー

コンテンツに最適な存続時間(キャッシュがオリジンから更新された情報を取得する前にデータを保持する時間)を設定する必要があります。

たとえば、アセットが約2か月ごとに変更される場合、50日の最大年齢ヘッダーが適切な場合があります。 ただし、アセットが毎日変更される場合は、キャッシュなしのヘッダーを使用することをお勧めします。

キャッシュコントロールヘッダー、キャッシュの鮮度、検証の詳細については、YouTubeビデオをご覧ください。

2.UTMパラメーターを無視します

複数の広告キャンペーン(Facebook広告、Google広告など)を実行すると、特定のUTMパラメーターを使用してさまざまなURLが生成されます。

その結果、最適化する必要のある複数のバリエーション(異なるUTMパラメーター)を持つ単一のページができます。

UTMタグ

各URLバリエーションは一意のオブジェクトと見なされ、すべてのリクエストはオリジンサーバーに送信されるため、これは問題です。

したがって、要求されたコンテンツがWebキャッシュで利用可能であったとしても、各要求はキャッシュミスとして分類されます。

これにより、キャッシュヒット率が不必要に低くなります。


NitroPack-優れたキャッシュヒット率を達成するための最も簡単な方法

すべてをカバーした後、高いキャッシュヒット率を達成するプロセス全体は少し圧倒されるように聞こえるかもしれません。

幸いなことに、CDNプロバイダーを使用している場合は、cach-controlヘッダーなど、私が言及したもののほとんどがすでに処理されている可能性があります。

それ以外の場合は、キャッシュプラグインを使用できます。

たとえば、NitroPackには、ユーザーの高いキャッシュヒット率を保証するすぐに使用できる機能が付属しています。 これも:

  • Cache Warmupは、Webサイトへのオーガニックアクセスをシミュレートします。これにより、NitroPackは、デスクトップおよびモバイルデバイス用にWebサイトの最適化された(キャッシュされた)バージョンを自動的に準備します。
  • キャッシュの無効化は、キャッシュされたコンテンツを「古い」ものとしてマークしますが、新しく最適化されたコンテンツが利用可能になるまでそれを提供し続けます。 その結果、訪問者は、たとえ少しの間古くなっていても、常に最適化されたコンテンツを見ることができます。
  • 組み込みのCDN。これにより、CDNを選択したキャッシングプラグインと同期する必要がなくなります。 多くの場合、これには時間がかかり、不便であり、予期しない問題が発生する可能性があります。
  • NitroPackがデフォルトで一般的に使用されるいくつかのUTM(およびその他の)パラメーターを無視できるようにする無視されたパラメーターオプション。これにより、マーケティングキャンペーンを実行するときに心配する必要がなくなります。

無視されたプラメーター

しかし、あなたはそれについて私の言葉を受け入れる必要はありません。 NitroPackを無料でテストし、その影響を自分で確認してください。