tencent cloud

Tencent Cloud EdgeOne

Cache

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-11-04 10:29:56
AI翻訳・品質チェック済み
CacheはWeb APIs標準のCache APIに基づいて設計されています。エッジ関数ランタイムはグローバルにcachesオブジェクトを注入します。このオブジェクトは一連のキャッシュ操作インターフェースを提供します。
説明:
キャッシュされたコンテンツは現在のデータノードでのみ有効であり、他のデータノードに自動的に複製されることはありません。

キャッシュスペース

Cache APIは相互に分離された2種類のキャッシュ空間、すなわちEdgeOneサイトキャッシュとエッジ関数独立キャッシュに関係します。これらは default名前空間を使用するかどうか、およびRequestがeo.cacheKey を含むかどうかによって区別されます。
キャッシュ空間
判定条件
書き込み側
関数内で利用可能な操作
EdgeOneサイトキャッシュ
default名前空間を使用し、かつRequestがeo.cacheKeyを保持していない場合
EdgeOneはサイトキャッシュルールに従って書き込みます。
cache.match のみ
エッジ関数独立キャッシュ
default以外の名前空間を使用するか、またはRequestがeo.cacheKeyを保持している場合
関数内でcache.putにより書き込みます。
cache.match / cache.put / cache.delete
2種類のキャッシュは相互に分離されています。エッジ関数独立キャッシュのキャッシュ操作はEdgeOneサイトキャッシュにヒットしません。
書き込みと削除はエッジ関数独立キャッシュのみをサポートします。default名前空間を使用し、かつeo.cacheKeyを含まない場合、拒否され、forbidden cdn cacheエラーがスローされます。
string型パラメータを使用する場合、エッジ関数ランタイムはそれをURLとしてGET型のRequestを構築します。このRequestはeo.cacheKeyを含みません。default名前空間では、読み取り、書き込み、削除はすべてEdgeOneサイトキャッシュ空間に属します。つまり、サイトキャッシュの読み取りのみが可能であり、書き込みと削除も同様に拒否されます。関数内でキャッシュの読み書きを行う必要がある場合は、Requestオブジェクトを使用してeo.cacheKeyを指定するか、非default名前空間を使用してください。
推奨:エッジ関数内でキャッシュの読み書きを行う必要がある場合は、エッジ関数独立キャッシュを統一的に使用してください(eo.cacheKeyを指定するか、非default名前空間を使用します)。読み取り、書き込み、削除には同じRequestオブジェクトを使用し、読み書きのクローズドループを形成します。サイトリソースのキャッシュは引き続きサイトキャッシュルールによって制御されます。
eo.cacheKeyは、cache.match、cache.put、cache.deleteの最初のパラメータ(request)を通じて渡されます。Requestオブジェクトを使用して構築します。例えば、new Request(url, { eo: { cacheKey: 'xxx' } })です(詳細はRequestInitEoPropertiesを参照してください)。
エッジ関数独立キャッシュのキャッシュキーは、名前空間、RequestのURL、およびeo.cacheKeyによって構成されます。3つがすべて同じ場合は同一のキャッシュに対応し、いずれか1つでも異なる場合は相互に分離されます。

例

addEventListener('fetch', (event) => {
event.respondWith(handleRequest(event));
});

async function fetchOrigin(event, cache, cacheKey) {
const response = await fetch(event.request);
response.headers.set('Cache-Control', 's-maxage=60');
event.waitUntil(cache.put(cacheKey, response.clone()));
return response;
}

async function handleRequest(event) {
const cache = caches.default;

// 読み取り、書き込み、削除には、eo.cacheKeyを指定した同じRequestオブジェクトを使用します。
const cacheKey = new Request(event.request.url, {
eo: { cacheKey: 'page-home-v1' },
});

try {
let response = await cache.match(cacheKey);
if (!response) {
response = await fetchOrigin(event, cache, cacheKey);
}
return response;
} catch (error) {
// キャッシュ期限切れ(504)などの異常時:古いキャッシュを削除してから、再度オリジンサーバーにアクセスして書き込みます。
try {
await cache.delete(cacheKey);
} catch (e) {}
return fetchOrigin(event, cache, cacheKey);
}
}

コンストラクタ

caches.defaultを使用すると、デフォルトのcacheインスタンスを取得できます。
// デフォルトのcacheインスタンスを取得します。
const cache = caches.default;

// 効果はcaches.defaultと同等です。
await caches.open('default');
caches.openを使用して、指定された名前空間のcacheインスタンスを作成します。
// 指定された名前空間のcacheインスタンスを作成します。
const cache = await caches.open(namespace);

パラメータ

caches.open(namespace)メソッドのパラメータ説明は以下の通りです。
パラメータ名
タイプ
必須
説明
namespace
string
はい
キャッシュの名前空間です。
この値が「default」の場合、デフォルトインスタンスを表します。また、caches.defaultを直接使用してデフォルトインスタンスを取得することもできます。
非default名前空間を使用して作成されたインスタンスの場合、そのキャッシュ操作はすべてエッジ関数独立キャッシュで行われ、EdgeOneサイトキャッシュにはヒットしません。違いの詳細については、キャッシュ空間をご覧ください。

インスタンスメソッド

match

cache.match(request: Request | string, options?: MatchOptions): Promise<Response | undefined>
requestに関連するキャッシュResponseオブジェクトを取得します。Promiseオブジェクトを返します。キャッシュが存在する場合はResponseオブジェクトを含み、存在しない場合はundefinedを含みます。
注意
cache.matchは内部から能動的にオリジンサーバーへアクセスしません。キャッシュが期限切れの場合は504エラーを返します。
EdgeOneサイトキャッシュをマッチングする必要がある場合(例えば、関数内でリソースがキャッシュ済みかどうかを判断する場合)、ターゲットリソースのURLで新規作成したRequestオブジェクトを使用してマッチングすることをお勧めします。例えば、cache.match(new Request('https://example.com/a.html'))です。クライアントリクエストオブジェクト(event.requestなど)を直接渡すと、追加のリクエストヘッダーが含まれるため、ヒットしない可能性があります。

パラメータ

パラメータ名
タイプ
必須
説明
request
Request | string
はい
キャッシュリクエストオブジェクト。
requestはGETメソッドのみをサポートします。タイプがstringの場合、URLとしてRequestオブジェクトを構築します。
読み取りキャッシュ空間:default名前空間を使用し、かつrequestがeo.cacheKeyを含まない場合、読み取るのはEdgeOneサイトキャッシュです。非default名前空間を使用するか、またはrequestがeo.cacheKeyを含む場合、読み取るのはエッジ関数独立キャッシュです。違いの詳細についてはキャッシュ空間をご覧ください。推奨:エッジ関数独立キャッシュを読み取る際は、cache.put、cache.deleteと同じRequestオブジェクトを使用してください。
requestにRangeヘッダーが含まれる場合、キャッシュされたResponseがRange範囲処理をサポートできるときは、206レスポンスを返します。
requestにIf-Modified-Sinceヘッダーが含まれる場合、キャッシュされたResponseにLast-Modifiedヘッダーが存在し、かつLast-ModifiedとIf-Modified-Sinceが等しいとき、304レスポンスを返します。
requestにIf-None-Matchヘッダーが含まれる場合、キャッシュされたResponseにETagヘッダーが存在し、かつETagとIf-None-Matchが等しいとき、304レスポンスを返します。
options
いいえ
設定オプション。

MatchOptions

属性名
タイプ
サンプル値
説明
ignoreMethod
boolean
true
Requestのmethodを無視するかどうかを設定します。trueの場合、Request元のmethodを無視し、GETとして処理します。

put

cache.put(request: Request | string, response: Response): Promise<void>
指定されたrequestをキャッシュキーとして使用し、responseをエッジ関数独立キャッシュに書き込むことを試みます。書き込みが成功するとPromise<undefined>オブジェクトを返します。default名前空間を使用し、かつeo.cacheKeyを含まない場合、書き込みは拒否されます。詳細は以下のパラメータをご覧ください。
注意:
パラメータresponseオブジェクトのCache-Controlヘッダーがキャッシュしないことを示す場合、413エラーが発生します。

パラメータ

パラメータ名
タイプ
必須
説明
request
Request | string
はい
キャッシュリクエストオブジェクト。
requestはGETメソッドのみをサポートします。タイプがstringの場合、URLとしてRequestオブジェクトを構築します。
default名前空間を使用し、かつeo.cacheKeyを含まない場合、書き込み先はEdgeOneサイトキャッシュとなり、拒否されてforbidden cdn cacheエラーがスローされます。それ以外の場合、書き込み先はエッジ関数独立キャッシュとなります。その他の違いについてはキャッシュ空間をご覧ください。
response
はい
キャッシュ内容について、次のように説明します。
Cache-Control
s-maxage、max-age、no-store、no-cache、privateをサポートします。このうち、no-store、no-cache、privateはすべてキャッシュしないことを示し、cache.putは413エラーを返します。
Pragma
Cache-Controlが設定されておらず、かつPragmaがno-cacheの場合、このときはキャッシュしないことを示します。
ETag
cache.matchパラメータのrequestにIf-None-Matchヘッダーが含まれている場合、ETagと関連付けて使用できます。
Last-Modified
cache.matchパラメータのrequestにIf-Modified-Sinceヘッダーが含まれている場合、Last-Modifiedと関連付けて使用できます。
416 Range Not Satisfiable
パラメータresponseオブジェクトが416 Range Not Satisfiableの場合、キャッシュしません。

パラメータ制限

cache.putで以下のパラメータ値を使用すると、パラメータエラーが発生します:
パラメータrequestがGETメソッド以外のメソッドです。
パラメータresponseのステータスコードが206 Partial Contentです。
パラメータresponseにVary: *ヘッダーが含まれています。

delete

cache.delete(request: Request | string, options?: DeleteOptions): Promise<boolean>
requestに関連するキャッシュresponseを削除します。ネットワークエラーが発生していない場合、常にPromiseを返し、trueを含みます。逆の場合はfalseを含みます。

パラメータ

パラメータ名
タイプ
必須
説明
request
Request | string
はい
キャッシュリクエストオブジェクト。
requestはGETメソッドのみをサポートします。タイプがstringの場合、URLとしてRequestオブジェクトを構築します。
default名前空間を使用し、かつeo.cacheKeyを含まない場合、削除先はEdgeOneサイトキャッシュとなり、拒否されてforbidden cdn cacheエラーがスローされます。それ以外の場合、削除先はエッジ関数独立キャッシュとなります。その他の違いについてはキャッシュ空間をご覧ください。
options
いいえ
設定オプション。

DeleteOptions

属性名
タイプ
サンプル値
説明
ignoreMethod
boolean
true
requestのメソッド名を無視するかどうかを設定します。trueの場合、Request元のメソッドを無視し、GETとして処理します。

関連参考

ヘルプとサポート

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

フィードバック