キャッシュのコントロール

コンテンツをキャッシュに保存する際に、有効期限 (TTL) が計算されます。TTL は、オリジンサーバーに問い合わせることなく、コンテンツを使用する最長時間です。TTL が期限切れになった後、コンテンツをストレージに保管することがありますが、オリジンで再検証できない限り、リクエストへの返答に使用することはありません。

TTL で指定された時間コンテンツがキャッシュされる保証はありません。オブジェクトのサイズと他のオブジェクトと比較してどの程度よく使用されるかに応じて、TTL が失効する前に削除されることがあります。

Fastly がリソースをキャッシュする期間をコントロールする方法の詳細については、キャッシュの鮮度に関するドキュメントをまず参照してください。通常はオリジンから送信されたキャッシュコントロールヘッダーが尊重されます。

オブジェクトの TTL を決定する

個々のオブジェクトの TTL は、次の方法で決定できます。

  • Surrogate-Control: max-ageCache-Control: max-ageまたは Expires ヘッダーを設定した場合、TTL はそれらのヘッダーで指定されたものになります。
  • コントロールパネルまたはカスタム VCL で TTL を指定した場合、その TTL が有効になります。
  • コントロールパネルまたはカスタム VCL で TTL を指定し、Surrogate-Control: max-ageCache-Control: max-age、またはExpires ヘッダーを設定した場合、コントロールパネルで指定された TTL がオリジンレスポンスで指定された TTL よりも優先される可能性があります。
  • コントロールパネルまたはカスタム VCL で TTL を指定しておらず、Surrogate-Control: max-ageCache-Control: max-age、または Expires ヘッダーを設定していない場合、TTL は 3600秒です。

この期限は、Configuration ページで変更できます。

Fastly キャッシュとWeb ブラウザ向けに異なる TTL を設定する

Fastly キャッシュからオブジェクトをパージすることは簡単です。ユーザーの Web ブラウザからキャッシュをクリアする方がはるかに困難です。そのため、Fastly キャッシュとユーザーの Web ブラウザで異なる TTL をコンテンツに設定する方が合理的です。W3C によって定義された Surrogate-Control ヘッダーで、Fastly キャッシュと Web ブラウザに異なる TTL を設定できます。例えば、Fastly で1年間オブジェクトをキャッシュに保存する一方で、Web ブラウザではユーザーがそのオブジェクトを表示できる有効期間を1日に設定する場合、以下のような HTTP ヘッダーを返します。

1
2
Surrogate-Control: max-age=31557600
Cache-Control: max-age=86400

この例の Surrogate-Control ヘッダーは、Fastly に最大31557600秒 (1年) オブジェクトをキャッシュするよう指示します。この例の Cache-Control ヘッダーは、ブラウザに最大86400秒 (1日) までオブジェクトをキャッシュするよう指示します。

Surrogate-Control について、Fastly は max-agestale-if-error、および stale-while-revalidateパラメーターをサポートしています。

キャッシュのコントロール方法の詳細については、キャッシュの鮮度に関するドキュメントを参照してください。

条件付きでページがキャッシュされるのを防ぐ

条件付きでページがキャッシュされないようにするには、下記の手順に従ってください。

  1. Fastly コントロールパネルにログインし。
  2. All services ページから適切なサービスを選択します。検索ボックスを使用すると、ID、名称、ドメインでの検索が行えます。
  3. Edit configuration ボタンをクリックし、オプションを選択してアクティブバージョンをクローンします。設定画面が開きます。
  4. Settings のリンクをクリックし、Settings 設定画面を開きます。
  5. Create cache setting ボタンをクリックし、新しいキャッシュ設定を作成します。Create a cache setting ページが表示されます。

    Cache Settings ウィンドウ

  6. 以下の要領で Create a cache setting ウィンドウの各フィールドに入力します。
    • Name フィールドに、新しいキャッシュ設定の説明的な名前を入力します (例 : Force Pass)。
    • TTL (seconds) フィールドに、0 を入力し、キャッシュノードにあるオブジェクトの寿命をゼロに設定します。
    • Action メニューから、Pass (do not cache) を選択し、リクエストをパスしてキャッシュを避けます。
    • Stale TTL (seconds) フィールドに 0 を入力し、失効済みコンテンツの配信時間をゼロ (秒) に設定します。
  7. Create ボタンをクリックします。Settings ページに新しいキャッシュ設定が表示されます。
  8. 新たに作成されたキャッシュ設定の右側にある Attach a condition リンクをクリックします。Create a new cache condition ウィンドウが表示されます。

    New Condition ウィンドウ

  9. 以下の要領で Create a new cache condition ウィンドウの各フィールドに入力します。
    • Name フィールドに、条件の説明的な名前を入力します (例 : Cacheable URLs)。
    • Apply if フィールドに、マッチさせたい URL の条件を作成します。例えば、req.url!~ "^/(cacheable|images|assets)" を入力し、/cacheable/images または /assets を含む URL を探す条件を設定できます。条件が見つかったら、URL がキャッシュされます。条件が見つからなければ、Pass のキャッシュ設定により、その URL が明示的にキャッシュされなくなります。
  10. Save and apply to ボタンをクリックします。
  11. Activate ボタンをクリックしてサービスをデプロイします。
Back to Top