概述前端可根据 `request.destination/mode` 对资源采用差异化策略;服务端则使用 Fetch Metadata 请求头进行防护。本文聚焦前端可实施部分并提出协作建议。前端路由与缓存策略self.addEventListener('fetch', event => {
const dest = event.request.destination;
if (dest === 'image' || dest === 'font') {
event.respondWith(cacheFirst(event));
} else if (dest === 'script' || dest === 'style') {
event.respondWith(staleWhileRevalidate(event));
} else if (event.request.mode === 'navigate') {
event.respondWith(networkFirst(event));
}
});
服务端协作建议验证 `Sec-Fetch-Site/Mode/Dest`,拒绝跨站不期望的请求。与前端的资源分组与版本命名一致,避免缓存错配。

发表评论 取消回复