17 lines
498 B
TypeScript
17 lines
498 B
TypeScript
export async function getOrCacheBlob(url: string) {
|
|
const cache = await caches.open("app-sounds-v1");
|
|
const hit = await cache.match(url);
|
|
if (hit) return await hit.blob();
|
|
|
|
const res = await fetch(url, { cache: "no-store" });
|
|
if (!res.ok) throw new Error(`Fetch failed: ${res.status}`);
|
|
|
|
await cache.put(url, res.clone());
|
|
return await res.blob();
|
|
}
|
|
|
|
export async function evictFromCache(url: string) {
|
|
const cache = await caches.open("app-sounds-v1");
|
|
await cache.delete(url);
|
|
}
|