キャッシュルールについて
エッジキャッシュ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 (低)
ネガティブレスポンスキャッシュ時間
5min(固定)
ステータスコード |
説明 |
404 |
(Not Found) |
405 |
(Method Not Allowed) |
410 |
(Gone) |
414 |
(Request-URI Too Large) |
500 |
(Internal Server Error) |
501 |
(Not Implemented) |
502 |
(Bad Gateway) |
503 |
(Service Unavailable) |
504 |
(Gateway Time-out) |
注釈
ネガティブキャッシュを無効にすることも可能です。その場合、ネガティブレスポンスは全てオリジンにPASSされます。
キャッシュしない条件
Cache-Control: no-store
Cache-Control: no-cache
Cache-Control: private
Surrogate-control: no-store
Vary:*
Set-Cookie
キャッシュの種別
ユーザーエージェントに基づくキャッシュ
エッジキャッシュは、デバイスのユーザーエージェントを判別し以下のようにキャッシュのグループ分けをおこなう事ができます。
Android/iOS
Tablet
PCまたはその他デバイス
注釈
User-Agentによるキャッシュグループ作成は、別途正規表現でご希望のパターンを作成する事ができます。
メソッドによる振り分け
エッジキャッシュはリクエストメソッド毎にキャッシュを保持します。(HTTPとHTTPSは別々のキャッシュを生成します。)
クエリーストリングの対応
クエリーストリングを以下の様にソート後(ボルトソート機能)、コンテンツをキャッシュします。 クエリーストリング非対応プランの場合、クエリーストリングを削除後コンテンツをキャッシュします。
ボルトソート例:
注釈
クエリに含まれる動的部分のみキャッシュキーから除外するカスタマイズができます。
特定パラメーターの除外:
キャッシュ効率化のため、ご指定のパラメーターを削除後キャッシュをおこなうカスタマイズができます。
以下の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 リクエストを受け取ると、そのリクエストを受け取ったエッジロケーションのキャッシュをチェックします。 エッジロケーションのキャッシュにオブジェクト全体またはオブジェクトの要求された部分がすでに含まれる場合、要求された範囲をキャッシュから直ちに供給します。