コンテンツにスキップ

Cache APIの使用

Cache APIを使用してCloudflareのキャッシュにレスポンスを保存します。

export default {
async fetch(request, env, ctx) {
const cacheUrl = new URL(request.url);
// キャッシュURLからキャッシュキーを構築
const cacheKey = new Request(cacheUrl.toString(), request);
const cache = caches.default;
// 値がすでにキャッシュに存在するか確認
// 存在しない場合は、オリジンから取得し、キャッシュに保存する必要があります
let response = await cache.match(cacheKey);
if (!response) {
console.log(
`リクエストURL: ${request.url} のレスポンスがキャッシュに存在しません。リクエストを取得してキャッシュします。`,
);
// キャッシュにない場合は、オリジンから取得
response = await fetch(request);
// レスポンスのすべてのフィールドを継承するためにResponseコンストラクタを使用する必要があります
response = new Response(response.body, response);
// Cache APIはCache-Controlヘッダーを尊重します。s-max-ageを10に設定すると
// レスポンスは最大10秒間キャッシュに保存されます
// ここでレスポンスに加えた変更はキャッシュされた値に反映されます
response.headers.append("Cache-Control", "s-maxage=10");
ctx.waitUntil(cache.put(cacheKey, response.clone()));
} else {
console.log(`キャッシュヒット: ${request.url}。`);
}
return response;
},
};