ステータスコードによるキャッシュ
エンタープライズ顧客は、オリジンウェブサーバーからの応答ステータスに基づいてキャッシュの有効期限(TTL)を設定できます。キャッシュTTLは、リソースがCloudflareネットワーク内でSTALEとしてマークされるか、キャッシュから破棄されるまでの期間を指します。ステータスコードは、リソースのオリジンによって返されます。
応答ステータスに基づいてキャッシュTTLを設定すると、静的ファイルのデフォルトキャッシュ動作(標準キャッシング)が上書きされ、オリジンウェブサーバーから送信されたキャッシュ指示が上書きされます。非静的アセットをキャッシュするには、キャッシュルールを使用してすべてをキャッシュするキャッシュレベルを設定します。no-store Cache-Controlや低いTTL(max-age/s-maxageを使用)を設定すると、オリジンウェブサーバーへのリクエストが増加し、パフォーマンスが低下します。
Free、Pro、Business顧客の最大キャッシュ制限はファイルごとに512 MBで、エンタープライズ顧客の最大キャッシュ制限はファイルごとに5 GBです。制限を引き上げる必要がある場合は、カスタマーサクセスマネージャーにお問い合わせください。
デフォルトでは、Cloudflareは、cache-controlディレクティブまたはexpires応答ヘッダーが存在しない場合、次のエッジキャッシュTTLで特定のHTTP応答コードをキャッシュします。
| HTTPステータスコード | デフォルトTTL |
|---|---|
| 200, 206, 301 | 120m |
| 302, 303 | 20m |
| 404, 410 | 3m |
その他のすべてのステータスコードはデフォルトでキャッシュされません。
応答ステータスによるキャッシュTTLを設定するには、ステータスコードによるキャッシュTTLのためにキャッシュルールを作成します。
curl --request PUT \"https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id}" \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "rules": [ { "expression": "(http.host eq \"www.example.com\")", "description": "応答ステータスによるキャッシュTTLを設定", "action": "set_cache_settings", "action_parameters": { "cache": true, "edge_ttl": { "status_code_ttl": [ { "status_code_range": { "to": 299 }, "value": 86400 }, { "status_code_range": { "from": 300, "to": 499 }, "value": 0 // no-cache }, { "status_code_range": { "from": 500 }, "value": -1 // no-store } ], "mode": "respect_origin" } } } ]}'ステータスコードとそれに対応するTTLを含むJSONオブジェクトを提供します。ステータスによるキャッシュTTLのキャッシュルールの各キーと値のペアは、次の構文を持っています。
status_code: 200や500などの整数値。status_codeはオリジンウェブサーバーからの正確なステータスコードと一致します。有効なステータスコードは100-999の範囲です。status_code_range:fromとtoの整数値。status_code_rangeは、指定された範囲内のオリジンウェブサーバーからの任意のステータスコードと一致します。value: アセットが有効な期間を秒単位で定義する整数値、または次の文字列のいずれか:no-store(-1に相当)、no-cache(0に相当)。
cacheTtlByStatusオプションは、リクエストの応答ステータスコードに対してキャッシュTTLを指定するcacheTtl機能のバージョンです(例:{ "200-299": 86400, 404: 1, "500-599": 0 })。