Cloudflare CDN(コンテンツ配信ネットワーク)では、保持期間(retention)と鮮度(freshness)は、関連しつつも別の概念です。キャッシュ内のオブジェクトについて、鮮度はオリジンに確認せずに有効とみなす期間、保持期間はキャッシュから削除されるまでの期間を指します。
リソースがリクエストされると、Cloudflare はそれをキャッシュします。以降のリクエストは、オリジンサーバーに問い合わせずに配信できます。キャッシュ済みオブジェクトが再度リクエストされない場合、より新しく人気のあるコンテンツの空きを作るため、やがて削除されます。この削除処理をエビクション(eviction)と呼びます。
キャッシュがいっぱいになったとき、どのオブジェクトを追い出すかは、Cloudflare が LRU(Least Recently Used)アルゴリズムで決めます。オブジェクトの保持期間は、追い出されるまでキャッシュに残る期間です。保持期間は、オブジェクトの相対的な人気とキャッシュサイズで決まり、設定はできません。
鮮度は TTL(Time to Live)とも呼ばれ、オリジンに再確認せずにキャッシュがオブジェクトを使える期間です。たとえば TTL が 5 分の場合、キャッシュは最初に受け取ってから 5 分間、そのオブジェクトを直接配信します。5 分後、再度配信する前に、Cloudflare はオブジェクトがまだ有効かをオリジンに確認する必要があります。Cloudflare の CDN 経由で配信するリソースの TTL は、次の方法で設定できます。
-
オリジンの
Cache-Controlレスポンスヘッダーに、max-ageやs-maxageなどの Origin Cache Control または CDN Cache Control ディレクティブを含めます。 -
Cache Rules または Workers を使います。
キャッシュ内のオブジェクトが鮮度を失うと、Cloudflare はオリジンと再検証します。stale-while-revalidate が設定されている場合、有効期限切れの時点で再検証は非同期に行われます。Cloudflare がバックグラウンドで新しいコピーを取得しているあいだも、訪問者にはキャッシュから配信されます。このディレクティブがない場合、受信リクエストはオリジンの応答を待ってからコンテンツを受け取ります。オリジンは、キャッシュ済みオブジェクトがまだ有効だと確認する(TTL を更新する)か、置き換え用の新しい版を返すことができます。詳細は 再検証 を参照してください。