← Cloudflare Workers / workers / testing / miniflare / storage
Кеш
- Справочник по Cache
- Как работает кеш
(обратите внимание, что кеш с использованием
fetchне поддерживается)
Кэш по умолчанию
Доступ к кэшу по умолчанию включён по умолчанию:
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
});Использование за пределами Workers
Для тестирования может быть полезно записывать и сопоставлять данные кеша извне Worker. Это можно
сделать с помощью 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Очистка
Все записи в кэше можно программно очистить с помощью purgeCache метод для Miniflare экземпляр. Это полезно во время разработки, когда нужно очистить кешированные ресурсы без перезапуска экземпляра:
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,
});