Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Cache

最終更新 Markdown で表示Agent セットアップ

デフォルトキャッシュ

デフォルトキャッシュへのアクセスは、デフォルトで有効です。

addEventListener("fetch", (e) => {
	e.respondWith(caches.default.match("http://miniflare.dev"));
});

名前付きキャッシュ

open で名前空間付きキャッシュにアクセスできます。キャッシュ名に default は使えません。指定するとエラーになります。

await caches.open("cache_name");

永続化

デフォルトでは、キャッシュデータはメモリに保存されます。リロード間では残りますが、別の Miniflare インスタンスには引き継がれません。ファイルシステムへの永続化を有効にするには、キャッシュ永続化オプションを指定します。

const mf = new Miniflare({
	cachePersist: true, // Defaults to ./.mf/cache
	cachePersist: "./data", // Custom path
});

Worker 外からの操作

テストでは、Worker の外からキャッシュへの put / match ができると便利です。getCaches メソッドで行えます。

import { Miniflare, Response } from "miniflare";

const mf = new Miniflare({
	modules: true,
	script: `
  export default {
    async fetch(request) {
      const url = new URL(request.url);
      const cache = caches.default;
      if(url.pathname === "/put") {
        await cache.put("https://miniflare.dev/", new Response("1", {
          headers: { "Cache-Control": "max-age=3600" },
        }));
      }
      return cache.match("https://miniflare.dev/");
    }
  }
  `,
});
let res = await mf.dispatchFetch("http://localhost:8787/put");
console.log(await res.text()); // 1

const caches = await mf.getCaches(); // Gets the global caches object
const cachedRes = await caches.default.match("https://miniflare.dev/");
console.log(await cachedRes.text()); // 1

await caches.default.put(
	"https://miniflare.dev",
	new Response("2", {
		headers: { "Cache-Control": "max-age=3600" },
	}),
);
res = await mf.dispatchFetch("http://localhost:8787");
console.log(await res.text()); // 2

パージ

Miniflare インスタンスの purgeCache メソッドで、キャッシュの全エントリをプログラムからパージできます。開発中に、インスタンスを再起動せずキャッシュ済みアセットを消したいときに便利です。

const mf = new Miniflare({ /* options */ });

// Purge the default cache and get the number of entries purged
const count = await mf.purgeCache();
console.log(`Purged ${count} entries`);

// Purge a specific named cache
await mf.purgeCache("my-named-cache");

無効化

disableCache オプションで、デフォルトキャッシュと名前付きキャッシュの両方を無効にできます。無効にしても、サンドボックス内ではキャッシュは利用できますが、何もキャッシュしません。開発中に便利な場合があります。

const mf = new Miniflare({
	cache: false,
});

役に立ちましたか?