tencent cloud

Tencent Cloud EdgeOne

Cache APIの使用

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-11-04 10:29:58
AI翻訳・品質チェック済み
エッジ関数内でCache APIを使用してエッジ関数独立キャッシュの読み書きを行います:eo.cacheKeyを含むRequestをキャッシュキーとし、キャッシュミス時にはオリジンからリモートリソースを取得してキャッシュに書き込みます(キャッシュ時間は10秒)。ヒット時にはキャッシュ内容を直接返します。レスポンスヘッダーx-edgefunctions-cacheによってキャッシュヒットかどうかを判断できます。
説明:
読み取り、書き込み、削除には、eo.cacheKeyを指定した同じRequestオブジェクトを使用する必要があります。eo.cacheKeyが付与されていない場合、書き込みは拒否され、forbidden cdn cacheエラーがスローされます。詳細はCache APIを参照してください。
あるリソースがEdgeOneサイトにキャッシュされているかどうかを判断する必要がある場合は、ターゲットリソースのURLで新規作成したRequestを使用してマッチングしてください(クライアントリクエストヘッダーを一切含めないことをお勧めします)。詳細はCache APIのmatchセクションを参照してください。

サンプルコード

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));
});

サンプルプレビュー

ブラウザのアドレスバーにエッジ関数のトリガールールに一致するURLを入力すると、サンプル効果をプレビューできます。
}



キャッシュにヒットしました。




関連参考





ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック