1.リクエスト先のキャッシュサーバのグループが異なる
CDNextのキャッシュサーバは複数のグループで構成されており、 とあるサーバにアクセスがあったとき、そのグループ内でキャッシュが共有されます。 しかし異なるグループのサーバには共有されないため、リクエスト先サーバのグループが異なると、 キャッシュヒットしないことがあります。
2.Varyヘッダが影響している
Varyは設定されている値によってキャッシュを分ける必要があることを示すヘッダです。
例えばVary:Accept-Encoding と設定されている場合、リクエストヘッダのAccept-Encodingの値によってキャッシュ分ける必要がある。という意味になります。
◆参考:キャッシュがヒット率が低く、オリジンサーバーのアクセスが減りません。原因として考えられることはなんでしょうか?
https://support.cdnext.stream.co.jp/hc/ja/articles/14953935547673
3.Last-modifiedが影響している
キャッシュサーバはオリジンにコンテンツを取得しに行く際、Last-modifiedの日付を確認し、新しければコンテンツを取得しなおします。オリジンが常に自動でファイルを更新する仕様だった場合、毎回新規でコンテンツを取得するためキャッシュヒットしません。
4.Etagが影響している
Etagの値が変わっている場合もキャッシュをオリジンへ取得しなおします。
5.Rangeリクエストしている
レスポンスヘッダにAccept-Rangesが存在する場合、そのコンテンツはRangeリクエストに対応していることになります。Rangeリクエストの場合リクエスト時のBytesごとにキャッシュを取得するため。bytesの値が一致しないとキャッシュヒットしません。
CDNextでは「Rangeキャッシュを有効化」を利用することで対応できます。
6.Expireの期限が常に近い
Expierはキャッシュの期限を具体的に日にちで設定しますが、この日にちが常に近々の日時に設定されている場合、キャッシュの更新が頻繁になりHTI率が下がります。CDNextでは「Cache-Controlヘッダを無視」を有効化することで CDNext 側で設定した TTL を優先できます。
7.max-ageが0で設定されている
キャッシュの有効期限を決めるmax-ageが0になっていると毎回キャッシュを取得するため HIT しません。CDNextでは「Cache-Controlヘッダを無視」を有効化することで回避できます。
8.cache-controlが、no-cache、no-storeで設定されている
この場合も毎回キャッシュを取得するため HIT しません。「Cache-Controlヘッダを無視」を有効化することで回避できます。
9.クエリキャッシュを利用している
リクエスト毎にクエリが変化する場合、変化するクエリ毎にキャッシュするようになる為キャッシュHIT致しません。
CDNホスト→クエリタブのクエリキャッシュ項目より「完全除去」、「指定クエリのみ利用」、「指定クエリを除外」を利用することで回避できます。
10.Cookieキャッシュを利用している
リクエスト毎にCookieが変化する場合、変化するCookie毎にキャッシュするようになる為キャッシュHIT致しません。
CDNホスト→CookieタブのCookieキャッシュ項目より「指定しない」、「指定Cookieのみ利用」、「指定Cookieのを除外」を利用することで回避できます。