英語のみで利用可能

このページは現在英語でのみ閲覧可能です。ご不便をおかけして申し訳ございませんが、しばらくしてからこのページに戻ってください。

キャッシュ・ミー・イフ・ユー・キャン (できるものならキャッシュしてみよう) : HTTP Cache API の場合

Ajay Bharadwaj

Product Manager, Fastly

Fastly のプログラマブルなキャッシュ機能は、Fastly の Compute プラットフォームのパワフルな機能のひとつです。画像をカスタマイズして、自社アプリケーションを使用するすべてのユーザーを満足させたいと思いませんか? Fastly にお任せください。HTTP リクエスト/レスポンスのフローのコンテキストでこれを行いますが、負担は発生しません。Fastly Compute は、Compute コード内から使用できる SDK API のセットである、新しい HTTP Cache API のシンプルな仕組みを利用してこの問題を解決します。

HTTP Cache API の仕組み

デフォルトでは、HTTP リクエストが Fastly のエッジを通過する際、オリジンのレスポンスが自動的にキャッシュされます (Cache-Control で明示的に上書きされない限り)。そのため、同じリソースに対する後続のリクエストは、バックエンドに接続することなくキャッシュから配信できます。 

HTTP Cache API を使用することで、これまで Compute ではできなかったことが可能になります。例えば、このデフォルトフローにカスタマイズのプロセスを挿入できるようになり、Compute のユーザーに新しいユースケースや可能性が開かれます。

主なポイント

HTTP Cache API の機能 (要約)

  • 任意の言語でのファーストクラスの HTTP サポート 

  • Fastly のキャッシュへの、プログラマブルできめ細かなアクセス

  • Fastly Compute によって配信される動的コンテンツのカスタマイズ

  • 開発者がキャッシュ動作を簡単にカスタマイズ

HTTP キャッシュのインターフェイスは、Simple Cache と Core Cache のインターフェイスによって確立された基盤の上に構築され、HTTP 仕様のフロー内でのリクエスト/レスポンスのキャッシュに最適化されています。これは完全に統合された API であり、開発者はオブジェクトのキャッシュプロパティを変更したり、Cache-Control などのヘッダーを調整したりするなどの機能をすべて HTTP フローのコンテキスト内で実行できます。

ユーザーの間で人気のあるユースケース

以下は、ダウンストリームキャッシュの Surrogate-Control と、ブラウザキャッシュを管理する Cache-Control ヘッダーを設定し、Fastly で有効期限 (TTL) を変更するシンプルな JavaScript の例です。

const backendResp = await fetch(clientReq, {
  backend: 'example_backend',
  cacheOverride: new CacheOverride({
    afterSend(resp) {
      resp.ttl = 300;
      resp.headers.set('Cache-Control', 'max-age=86400'); // Rules for browsers
      resp.headers.set('Surrogate-Control', 'max-age=31536000'); // Rules for downstream caches
      resp.headers.delete('expires');
    },
  }),
});

他にも実装できるアーキテクチャは無数にあります。以下では、使用開始に役立つアイディアをいくつかご紹介します。

  • **キャッシュ前にバックエンドレスポンスのキャッシュコントロールをカスタマイズする。**開発者は、Content-Type などのキャッシュに関連しないレスポンスヘッダーに基づいてキャッシュの有効期限を設定できます。
    メリット : この柔軟性によって、よりインテリジェントで効率的なキャッシュ戦略が可能になります。コンテンツタイプに基づいてキャッシュの有効期限を設定することで、パフォーマンスとリソースの使用を最適化できます。例えば、画像や CSS ファイルなどの静的アセットを長期間キャッシュし、動的コンテンツの有効期限を短く設定することができます。これにより、各アセットタイプに適したコンテンツの鮮度を維持しながら、Webサイトの加速、オリジンの負荷軽減、ユーザーエクスペリエンスの向上が可能になります。

  • **キャッシュに保存する前にレスポンスヘッダーまたは本文を変更する。**例えば、オリジンから返された生の JSON データではなく、ローカルで生成された HTML バージョンのレスポンスをキャッシュできます。
    メリット : この機能により、最適化されたバージョンのコンテンツをキャッシュに保存できるため、処理時間の短縮と配信速度の向上が期待できます。生の JSON データではなく HTML バージョンをキャッシュすることによって変換手順が不要になるため、後続リクエストの処理が加速するためです。その結果、パフォーマンスが向上するだけでなく、オリジンサーバーとエッジの両方の計算負荷が軽減され、コスト削減とアプリケーション全体の応答性の向上にもつながります。

  • **オリジンのコンテンツに基づいてキャッシュするかどうかを判断する。**これは、「HTTP 200 OK」のレスポンスをキャッシュしたくない場合に最適です。
    メリット : このレベルのコントロールによって、有効で有用なコンテンツのみをキャッシュし、キャッシュの完全性と信頼性を維持できます。「200 OK」ステータスにもかかわらず、エラーを含むレスポンスがキャッシュされないようにすることで、誤ったデータがユーザーに配信されるのを防ぐことができます。これにより、ユーザーエクスペリエンスの一貫性が向上し、古くなったコンテンツや誤ったコンテンツが提供されるリスクが軽減され、アプリケーション出力の全体的な質と精度が維持されます。

詳細とその他のサンプルコードについては、Fastly の開発者向けポータルをご覧ください。

早速キャッシュを開始

Fastly のキャッシュ API は、パーソナライゼーションの限界を押し広げ、最先端のエクスペリエンスを実現するのに最適です。このような新しいキャッシュコントロール機能は既存のワークフローとのスムーズな統合が可能なため、シンプルなカスタマイズプロセスを非常に簡単に追加できます。

HTTP Cache API を試してみませんか? 今すぐ使用を開始するか、またはフォーラムに参加して、Fastly のキャッシュ機能をさらに効果的に活用する方法をお尋ねください。