キャッシュルールについて

エッジキャッシュCDNは、オリジンサーバーからコンテンツを取得し一定期間エッジサーバーでキャッシュ後、コンテンツをユーザーに返却します。 キャッシュをおこなう・キャッシュせずオリジンにPASSする動作の詳細は以下に定めた通りです。

キャッシュ可能なリクエスト・コンテンツ

エッジキャッシュCDNがキャッシュできる条件は以下の通りです。

メソッド

GET 及び HEAD メソッドの場合、キャッシュ配信します。

静的コンテンツ

拡張子有無にかかわらず、画像や動画などの静的コンテンツをキャッシュ配信します。

動的コンテンツ

パラメーター(クエリーストリング)またはCookieが付与されているコンテンツ

キャッシュ配信が可能な最大ファイルサイズ

各プラン毎に異なります。詳しくはプラン表をご確認下さい。

キャッシュキーについて

キャッシュキーとは、コンテンツ毎にキャッシュするために利用される値です。 デフォルトでは以下の値がキャッシュキーに含まれます。

  • メソッド
  • プロトコル(HTTPまたはHTTPS)
  • URL(PATH)
  • クエリーストリング
  • リクエストCookie
  • X-TAGヘッダ内のレスポンス値

注釈

その他、任意のレスポンスヘッダー内の値をキャッシュキーに含めることも可能です。

キャッシュ時間について

オリジンサーバー側で以下のレスポンスヘッダが付与されている場合は、指定時間キャッシュします。 いずれのヘッダも付与されていない場合、デフォルト時間(24H)キャッシュします。

  • Cache-Control:max-age
  • Cache-Control:s-maxage
  • Expires

注釈

デフォルトTTLをOFFにすることも可能です。その場合、いずれかのヘッダが付与されていない場合はキャッシュせずオリジンサーバーにPASSします。

キャッシュファイルの保持時間

TTL値はコンテンツがキャッシュされたタイミングを0分としキャッシュファイルごとに異なるTTL値を保持します。

注釈

TTL値は最長保持時間であり、最低保持時間ではありません。(TTL値の期間内であってもオリジンサーバーに問い合わせを行う場合があります。)

キャッシュ時間の順序・優先順位

キャッシュコントロールヘッダの優先順位は以下の通りです。

優先度(高) s-maxage > max-age > Expires (低)



例:HTTPヘッダの優先順位
Cache-Controlmax-ageがある場合 max-ageの期間
Cache-Controlmax-age及びs-maxage両方ある s-maxageの期間
Cache-Controlmax-age及びExpiresがある max-ageの期間
s-maxage,max-age,Expiresいずれも存在しない デフォルト時間(24H)

ネガティブレスポンスキャッシュ時間

5min(固定)

ネガティブレスポンス一覧
4xx系ステータス 5xx系ステータス
400(Bad Request) 500(Internal Service Error)
403(Forbidden) 501(Not Implemented)
404(Not Found) 502(Bad Gateway)
405(Method Not Allowed) 503(Service Unavailable)
414(Request-URI Too Large) 504(Gateway Time-out)

注釈

ネガティブキャッシュを無効にすることも可能です。その場合、ネガティブレスポンスは全てオリジンにPASSされます。

キャッシュしない条件

HTTPリクエストのMethodがGET/HEAD以外(例POST, PUT, DELETEなど)
基本認証が設定されたコンテンツ
ダイジェスト認証が設定されたコンテンツ

オリジンからのHTTPレスポンスにSet-Cookieが含まれている

オリジンからのHTTPレスポンスに以下のヘッダが含まれている
  • Cache-Control: max-age=0
  • Cache-Control: no-store
  • Cache-Control: no-cache
  • Cache-Control: private
  • Pragma: no-cache

キャッシュの種別

ユーザーエージェントに基づくキャッシュ

エッジキャッシュは、デバイスのユーザーエージェントを判別し以下のようにキャッシュのグループ分けをおこなう事ができます。

  • Android/iOS
  • Tablet
  • PCまたはその他デバイス

注釈

User-Agentによるキャッシュグループ作成は、別途正規表現でご希望のパターンを作成する事ができます。

メソッドによる振り分け

エッジキャッシュはリクエストメソッド毎にキャッシュを保持します。(HTTPとHTTPSは別々のキャッシュを生成します。)

クエリーストリングの対応

クエリーストリングを以下の様にソート後(ボルトソート機能)、コンテンツをキャッシュします。 クエリーストリング非対応プランの場合、クエリーストリングを削除後コンテンツをキャッシュします。

ボルトソート例:

ボルトソート前
www.redbox.ne.jp/?cid=123&uid=123&user=000
www.redbox.ne.jp/?user=000&uid=123&cid=123
www.redbox.ne.jp/?uid=123&cid=123&user=000

ボルトソート後
www.redbox.ne.jp/?cid=123&uid=123&user=000


注釈

クエリに含まれる動的部分のみキャッシュキーから除外するカスタマイズができます。

特定パラメーターの除外:

キャッシュ効率化のため、ご指定のパラメーターを削除後キャッシュをおこなうカスタマイズができます。

以下のURLにて count のみ動的に変更されるため除外

  • www.redbox.ne.jp/?cid=200&user=1& count=11
  • www.redbox.ne.jp/?cid=200&user=1& count=22

パラメーター除外後

  • www.redbox.ne.jp/?cid=200&user=1

レンジリクエストについて

Range GET リクエストを受け取ると、そのリクエストを受け取ったエッジロケーションのキャッシュをチェックします。 エッジロケーションのキャッシュにオブジェクト全体またはオブジェクトの要求された部分がすでに含まれる場合、要求された範囲をキャッシュから直ちに供給します。