概述合理的版本参数可避免旧缓存。本文给出 SW 命名与匹配策略。命名与匹配const ASSETS = 'assets-v3';
self.addEventListener('fetch', event => {
const url = new URL(event.request.url);
const v = url.searchParams.get('v');
if (url.pathname.startsWith('/assets/') && v) {
event.respondWith((async () => {
const cache = await caches.open(ASSETS);
const key = new Request(url.origin + url.pathname + '?v=' + v, { headers: event.request.headers });
const cached = await cache.match(key);
if (cached) return cached;
const res = await fetch(event.request);
await cache.put(key, res.clone());
return res;
})());
}
});

发表评论 取消回复