CDNの効率を解放する: CDNキャッシュヒット率を改善する方法

EdgeOne-Product Team
15 分読む
Mar 12, 2025

CDN(コンテンツ配信ネットワーク)のキャッシュヒット率は、CDNがエンドユーザーにコンテンツを配信する効率を測定する重要な指標です。これは、リクエストのうち、オリジンサーバーから取得されるのではなく、直接CDNキャッシュから提供されるリクエストの割合を示します。キャッシュヒット率は顧客体験に直接影響し、高いヒット率を確保することがCDNユーザーの中核的な提案となっています。本記事では、CDNキャッシュヒット率の概念、その影響要因、および最適化戦略について説明します。

キャッシュヒットとは?

典型的なCDNアクセスパスでは、通常の役割には以下が含まれます:ユーザー -> ブラウザ -> CDNノード -> オリジンサーバー。ブラウザとCDNノードの両方がリソースのキャッシュとして機能することができます。

cdn resource access pathユーザーがブラウザにアドレスを入力すると、次のステップが発生します:

  1. ブラウザは、ローカルで条件を満たし、期限切れでないリソースをチェックします。見つかった場合、リクエストを開始せずにリソースをユーザーに返します。
  2. ブラウザがローカルリソースを見つけたが、期限切れかどうかわからない場合、サーバーにキャッシュの有効期限を検証するリクエストを送信します。サーバーがキャッシュが有効であることを確認すると、304ステータスコードを返し、ブラウザはローカルキャッシュリソースを直接使用できることを示します。
  3. サーバーがキャッシュが期限切れであることを確認すると、新しいリソースを200ステータスコードで直接返します。ブラウザはそのポリシーに従って新しいリソースをローカルにキャッシュするかどうかを決定し、ユーザーに応答します。
  4. サーバーがCDNノードの場合、キャッシュ検証プロセス中にローカルリソースが見つからないと、特定の戦略に従ってクラスタ内の他のノードにアクセスしたり、オリジンサーバーにリソースを要求します。リソースをユーザーに返す際に、各ノードは事前設定されたルールに従ってローカルにキャッシュします。

上記のアクセス戦略を通じて、後続のユーザーが同じリソースにアクセスする際に、オリジンサーバーにリクエストをせずにローカルまたはCDNノードのキャッシュに直接アクセスできるようになります。

Content Delivery Network (CDN) process illustrating how users access resources with improved efficiency and reduced load on origin servers. The diagram demonstrates the steps: 1) Browser performs local validation and requests resource from origin server; 2) CDN nodes cache and directly return resource; 3) Browser caches resource and serves to user; 4) Browser retrieves resource from cache and serves to user. This process enhances user experience by reducing latency and increasing reliability for subsequent requests.

キャッシュヒット率とは?

CDNに精通しているなら、CDNの核心はノードキャッシュであり、地理的に十分な数のノードを展開することでキャッシングサービスを提供することを知っているでしょう。クライアントはエッジノードを介してキャッシュされたリソースに直接アクセスし、オリジンサーバーへの頻繁な訪問を避け、加速を達成します。

キャッシュ性能を測定するための主要な指標はキャッシュヒット率であり、これにはトラフィックヒット率とリクエストヒット率が含まれます。

  • トラフィックヒット率は、一定の時間内にリクエストの応答でヒットしたバイトの合計数を、総応答バイトで割ったものを指します。
  • リクエストヒット率は、一定の時間内にヒットしたリクエストの数を総リクエスト数で割ったものを指します。

これらの指標は、異なる次元からキャッシュヒットの状況を反映しています。キャッシュヒット率が高いほど、オリジンサーバーのネットワーク帯域幅の消費を減少させ、オリジンサーバーへの負荷を軽減し、ユーザーアクセスのレイテンシを減少させ、応答時間を短縮します。

一般的なキャッシュヘッダーとは?

CDNアクセスにおけるキャッシュ戦略は、主にHTTPヘッダーを介して実施されます。異なるヘッダーを適切に設定することで、CDNノードやブラウザのキャッシング動作を制御できます。

応答ヘッダー

  • Cache-Control:CDNノードやブラウザのリソースのキャッシング動作を制御します。一般的な値には、no-cache、no-store、public、max-age=Nがあります。max-age=0、no-cache、no-store、またはprivateの場合、CDNノードはリソースのキャッシング動作を無効にします。
  • Expires:リソースの有効期間を示します。この時間を過ぎると、リソースは期限切れとしてマークされる必要があります。
  • Last-Modified:リソースの最終変更時刻を示します。CDNノードは、このヘッダーを使用してキャッシュの一貫性を判断します。
  • ETag:リソースのユニークな識別子を示します。生成および検証ルールはサーバーによって決定されます。
  • Age:ノード上のリソースのキャッシュ時間を示します。

ブラウザのデバッグモードを使用して、応答パケットをキャプチャし、上記のヘッダーの意味を説明します:

上記のリソースの応答ヘッダーは、多くの情報を明らかにしています:

  • Age:リソースがノードに518992秒間キャッシュされていることを示します;
  • Cache-Control:キャッシュサーバーとブラウザに対し、リソースの最大キャッシュ時間が2592000であることを通知します;
  • ETag:リソースのユニークな識別子が5e7c3f77-a89であることを示します;
  • Expires:リソースが2021-07-03 06:01:19の時点で期限切れになることを示します;
  • Last-Modified:リソースの最終変更時刻が2020-03-26 05:36:55であることを示します。

リクエストヘッダー

  • If-Modified-Since:サーバーとのキャッシュバージョンの検証に使用されます。この時間以降にリソースが更新されている場合、サーバーは新しいリソースを返す必要があります。そうでない場合、304を返します;
  • If-None-Match:ETagと組み合わせて、ブラウザがキャッシュしたリソースの識別子をサーバーに通知するために使用されます。変更があればサーバーは新しいリソースを返す必要があります。そうでない場合、304を返します。

低いキャッシュヒット率の理由は何ですか?

ウェブサイトのアクセス速度が遅い、またはオリジンサーバーのバックトゥオリジン帯域幅が大きい場合、ウェブサイトのトラフィックの増加を除外した後に、低いキャッシュヒット率がバックトゥオリジンの行動を引き起こしている可能性があります。この場合、以下の方法でトラブルシューティングできます。

  1. まず、Tencent EdgeOne Consoleにログインし、データインサイト - アナリティクスでトラフィックヒットの詳細を確認します。
  2. 帯域幅とトラフィックの傾向曲線をチェックして、突然のトラフィック増加がヒット率の低下を引き起こしているかどうかを確認します。
  3. トラフィックおよびリクエスト詳細ページでTOP URL統計を確認し、ノードキャッシュ構成ルールを確認して、TOPリソースへのアクセスが対応するキャッシュ戦略をヒットできるかどうかを判断します。

観察されたヒット率の低下が期待と一致しない場合、ドメイン構成を確認してキャッシュ戦略が合理的かどうかを判断できます:

1. オリジンサーバーのキャッシュヘッダーは正しく構成されていますか?
ノードキャッシュ戦略がオリジンサーバーに従うように設定されていて、オリジンサーバーが強制的にCache-Controlヘッダーをリソースのキャッシングを無効にするように設定している場合、CDNノードのキャッシュ機能が失敗し、ヒット率が低下します。

2. オリジンサーバーで新しいリソースが多数発表されていますか?
オリジンサーバーに多くの新しいリソースがある場合、より多くのリクエストがオリジンに戻ることを引き起こし、トラフィックヒット率が低下します。

3. オリジンサーバーに例外がありますか?
オリジンサーバーが障害を起こし、リソースアクセスに多数の4xxおよび5xxエラーが発生すると、各リクエストがバックトゥオリジンの行動を引き起こし、ヒット率が低下します。

4. キャッシュの有効期限が正しく構成されていますか?
CDNキャッシュ時間が短すぎる場合、CDNノードが頻繁に期限切れになり、頻繁なバックトゥオリジンの行動を引き起こし、ヒット率が低下します。同時に、リソースキャッシング戦略には優先順位があり、実際のヒット戦略が期待に沿わない場合があります。

5. フィルタリングパラメータ機能は有効ですか?
ドメインに対してフィルタリングパラメータキャッシュ機能が無効になっている場合、キャッシュはファイルのフルパスに基づいて一致します。同じリソースが異なるリクエストパラメータを持つ場合、同じキャッシュにヒットできず、ヒット率が低下します。

CDNキャッシュヒット率を向上させる方法は?

キャッシュヒット率の低下の理由を理解した後、以下の手段を通じてリソースのヒット率を向上させることができます。Tencent EdgeOneでは、強力なルールエンジンを使用して、ドメインごとに異なるルールを構成でき、グローバル設定を通じてサイト全体にグローバルルールを定義できます:

ノードキャッシュ時間の設定

ノードキャッシュ時間は、リソースがCDNサービスノードにキャッシュされるために構成された時間を指します。この構成は、Tencent EdgeOneのキャッシュヒット率統計に直接影響します。サイト加速で、ルールエンジンをクリックし、新しいルールを作成し、EdgeOneのノードキャッシュTTLを見つけます。必要に応じて静的および動的リソースのキャッシュ時間を設定します。

ブラウザキャッシュ時間の設定

ブラウザキャッシュ時間は、リソースがブラウザにローカルにキャッシュされるために構成された時間を指します。この構成はTencent EdgeOneコンソールのキャッシュヒット率統計を改善しませんが、実質的にはユーザーアクセスの実際のヒット率を向上させます。サイト加速ページで、ルールエンジンをクリックし、ブラウザキャッシュTTLを見つけ、静的および動的リソースのキャッシュ時間を必要に応じて設定します。

リフレッシュ機能の適切な使用

無効なリフレッシュ行動、特にディレクトリリフレッシュを制御します。アクセス量が多く、変更が稀なリソースについては、次の変更サイクルの前にリフレッシュタスクを提出する必要はありません。ディレクトリリフレッシュは、大量のリソースアクセスを失敗させ、バックトゥオリジンを引き起こすため、その使用をできるだけ減らしてください。使用する必要がある場合は、影響が少なく、レベルが長いディレクトリをリフレッシュしてください。

事前にプリロードする

新しいバージョンが公開される前やリソースが変更される前に、ホットスポットリソースを抽出し、CDNプリロード機能を使用してノードにリソースをキャッシュします。可能な限りCDNアクセス量を増加させ、キャッシュの排除を避けます。

Tencent EdgeOneのキャッシング戦略

Tencent EdgeOneは、基本的なキャッシング能力の向上に加えて、キャッシュ戦略をさらに最適化し、アクセスヒット率を向上させます。主要な機能には:

膨大なリソースの蓄積

Tencent EdgeOneは、Tencentによってグローバルに立ち上げられたエッジセキュリティ加速プラットフォームです。2800以上のエッジノードと20年以上のセキュリティ技術の蓄積に依存し、企業に対してセキュリティ保護、パフォーマンス加速、および関連技術サポートのための統合エッジサービスを提供します。このプラットフォームは、DNS解決、Layer 4プロキシ、サイト加速、インテリジェント加速、DDoS保護、Web保護、ボット保護、負荷分散など、10以上の機能を統合しています。企業プラットフォームとユーザー体験の両方のセキュリティと安定性を確保し、グローバル企業のデジタルトランスフォーメーションや海外展開を支援することを目的としています。

多層キャッシュアーキテクチャ

Tencent EdgeOneは、キャッシュヒット率を向上させるために、デフォルトで基盤レベルに中間オリジンを増加させたアーキテクチャを提供します。エッジ層は広範なカバレッジを提供し、中間オリジンは高いストレージ能力を提供します。任意のCDNノードがヒットしてリクエストに応じると、それはキャッシュヒットと見なされます。必要に応じて、キャッシング能力をさらに強化するために三層オリジンを構成できます。

マージ + クラスタードオリジン

同じレイヤーのノード上で、Tencent EdgeOneはマージオリジンと内部クラスタオリジン機能も提供します。特定の時間枠内に、同じリソースに対するリクエストは1つのオリジンリクエストにマージされ、同じリソースに対するアクセススケジューリングが内部クラスタ内で行われます。これにより、オリジンリクエストが収束し、リソースヒット率が向上します。

基盤のブロックストレージ

大きなファイルがダウンロードされるシナリオでは、顧客がファイル全体をリクエストしない場合があります。Tencent EdgeOneは、大きなファイルのストレージを基盤レベルでシャーディングブロックに保存し、オンデマンドでファイルを引き出すことで最適化します。同時に、任意のバイト間隔の範囲リクエストについては、ノードはオリジンから要求されたバイト間隔をカバーする完全なフラグメントを取得します。同じフラグメント内の他のバイトに対する後続のリクエストはキャッシュに直接ヒットでき、ストレージとオリジン取得の効率を最適化します。

柔軟なキャッシュルール構成

Tencent EdgeOneコンソールでは、通常の加速ノードキャッシングの設定に加えて、ヘッダーキャッシング、ステータスコードキャッシング、ブラウザキャッシング、およびキャッシュ構成など、複数のキャッシュ関連機能も提供しています。ユーザーはコンソール上でリソースキャッシングルールを自分で定義できます。

結論

CDNキャッシュヒット率の最適化は、パフォーマンスの向上、コスト削減、スケーラビリティの向上、そしてウェブアプリケーションの全体的な信頼性とセキュリティの向上に不可欠です。

Tencent EdgeOneの高度なキャッシング能力、グローバルなカバレッジ、動的コンテンツのサポート、カスタマイズ可能なポリシー、リアルタイムモニタリング、および強化されたセキュリティは、CDNキャッシングを最適化し、優れたコンテンツパフォーマンスを提供するための強力なソリューションとなります。これらの利点を直接体験したい方は、ぜひお問い合わせいただき、Tencent EdgeOneやその機能について詳しく学んでください。また、こちらをクリックして無料トライアルを開始することもできます。