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

コンテンツをキャッシュに保存する際に、有効期限 (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秒です。

この制限は、Deliver ページで変更できます。

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

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

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

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

ヒント

CDN は、エンドユーザーの Web ブラウザのキャッシュを無効化することができます。コンテンツが頻繁に変更される場合、または新しいコンテンツをエンドユーザーがすぐに利用できるようにしたい場合、最善の戦略は、そのコンテンツを Fastly にキャッシュし、キャッシュしないようにブラウザに特別に指示することです。そして、Fastly キャッシュをパージすると、エンドユーザーのブラウザは、次にコンテンツが要求されたときに新しいバージョンを表示します。

これを処理する方法の 1 つは、以下のヘッダーを返すことです。

Surrogate-Control: max-age=31557600
Cache-Control: no-store, max-age=0

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

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

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

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

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

  1. Fastly コントロールパネルにログインします。
  2. Home ページから、適切なサービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
  3. Edit configuration をクリックし、アクティブなバージョンをクローンするオプションを選択します。
  4. Settings をクリックします。
  5. Create 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 をクリックします。

  8. 新たに作成されたキャッシュ設定の右側にある Attach a 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 をクリックして設定への変更をデプロイします。
ヒント

これらの手順を使用し、バックエンドレスポンスに基づいてデフォルトのキャッシュを上書きすることができます。


翻訳についての注意事項
このガイドは役に立ちましたか?

このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合は、サポートチームまでご連絡ください。このフォームは reCAPTCHA によって保護されており、Google のプライバシーポリシー利用規約が適用されます。