eo.cacheKeyを含むRequestをキャッシュキーとし、キャッシュミス時にはオリジンからリモートリソースを取得してキャッシュに書き込みます(キャッシュ時間は10秒)。ヒット時にはキャッシュ内容を直接返します。レスポンスヘッダーx-edgefunctions-cacheによってキャッシュヒットかどうかを判断できます。eo.cacheKeyを指定した同じRequestオブジェクトを使用する必要があります。eo.cacheKeyが付与されていない場合、書き込みは拒否され、forbidden cdn cacheエラーがスローされます。詳細はCache APIを参照してください。const RESOURCE_URL = 'https://static.cloudcachetci.com/qcloud/main/scripts/release/common/vendors/jquery-3.2.1.min.js';async function fetchResource(event, request, cache) {// キャッシュミス:オリジンサーバーからリソースを取得し、エッジ関数の独立キャッシュに書き込みます。const response = await fetch(RESOURCE_URL);response.headers.set('Cache-Control', 's-maxage=10');event.waitUntil(cache.put(request, response.clone()));response.headers.append('x-edgefunctions-cache', 'miss');return response;}async function handleEvent(event) {const cache = caches.default;// 読み取り、書き込み、削除には、eo.cacheKeyを指定した同じRequestオブジェクトを使用します。const request = new Request(RESOURCE_URL, {eo: { cacheKey: 'jquery-v1' },});try {let response = await cache.match(request);if (!response) {return fetchResource(event, request, cache);}response.headers.append('x-edgefunctions-cache', 'hit');return response;} catch (e) {// キャッシュ期限切れ(504)または異常時:削除後に再度オリジンサーバーへアクセスし、書き込みます。try {await cache.delete(request);} catch {}return fetchResource(event, request, cache);}}addEventListener('fetch', (event) => {event.respondWith(handleEvent(event));});


フィードバック