• No : 407
  • 公開日時 : 2024/08/29 12:35
  • 更新日時 : 2024/10/05 04:19
  • 印刷

キャッシュキーについて教えてください

カテゴリー : 

回答

キャッシュキーとは、CDNに保存されているキャッシュコンテンツを取り出す際に利用する識別子のことです。
デフォルトではリクエストされたホスト、パス、クエリパラメーターを結合した値がキャッシュキーとして利用されます。
 
■デフォルト設定で生成されるキャッシュキーの例
https://example.com/abc.jpg?id=111
 →キャッシュキーは「example.com/abc.jpg?id=111」
https://example.com/abc.jpg?id=222
 →キャッシュキーは「example.com/abc.jpg?id=222」
 
上記の場合、①②はリクエストされたホストとパスは同一ですが、クエリパラメーターが異なるため別のキャッシュコンテンツとして扱われます。
 
■キャッシュキーの変更方法
VCLスニペットを追加することでキャッシュキーを変更できます。
キャッシュキーをむやみに変更すると、HIT率の低下や違うリクエストに対し同一コンテンツを返すなどの影響が発生する可能性があります。
後述する「キャッシュキー変更時の注意点」をご確認のうえ、実装をお願いいたします。
 
◇例:キャッシュキーにクエリパラメーターを含めないようにする
配置場所:指定 vcl_hash
VCL:
set req.hash += req.url.path;
set req.hash += req.http.host;
set req.hash += req.vcl.generation;
return (hash);
 
◇例:キャッシュキーをhttp、httpsでそれぞれ別にする
配置場所:指定 vcl_hash
VCL:
set req.hash += req.url;
set req.hash += req.http.host;
set req.hash += req.http.Fastly-SSL;
set req.hash += req.vcl.generation;
return (hash);
 
■キャッシュキー変更時の注意点
  • 複数のリクエストに対して同一のコンテンツを返してしまうことがある
     ◇例:キャッシュキーをパス、クエリパラメーターだけに設定した場合
     ①https://example.com/abc.jpg?id=111
      →キャッシュキーは「/abc.jpg?id=111」
     ②https://example.net/abc.jpg?id=111
      →キャッシュキーは「/abc.jpg?id=111」
    上記の場合、①②はリクエストされたホストが違うため本来は異なるコンテンツに対するリクエストですが、キャッシュキーが同一のためどちらも同じコンテンツが返却されます。
     
  • キャッシュキーに含める値を増やした場合、キャッシュキーの種類が増えキャッシュヒット率が低下してしまうことがある
     
  • キャッシュの削除は「対象のURLと追加したキー情報の値」ごとにキャッシュ削除を行う必要がある
    ◇例:キャッシュキーをhttp、httpsでそれぞれ別に設定した場合
    http://example.com」 と 「https://example.com」 で別のキャッシュキーが設定されているため、それぞれに対するキャッシュ削除が必要となります。
     
    CDN画面の 対象サービス名を押下 > [キャッシュ削除] > [まとめて削除]より、「http://example.com」および「https://example.com」を入力して[キャッシュ削除]ボタンを押下することで削除が可能です。