概述Navigation Preload 允许在 Service Worker 启用后并行抓取导航请求,避免等待 SW 处理导致延迟。可在 `fetch` 事件中读取 `event.preloadResponse` 用作快速响应,与缓存策略协作提升体验。示例// 在 SW 安装或激活阶段启用
self.addEventListener('activate', event => {
event.waitUntil(self.registration.navigationPreload.enable())
})
// 读取预加载响应
self.addEventListener('fetch', event => {
if (event.request.mode === 'navigate') {
event.respondWith((async () => {
const preload = await event.preloadResponse
return preload || fetch(event.request)
})())
}
})
工程建议条件与协作:仅对导航请求使用预加载;与缓存命中优先级协作,避免重复下载。观测与验证:记录首包改善与失败率;在弱网与离线策略下验证行为。安全:处理重定向与认证;避免泄露敏感缓存内容。参考与验证MDN Navigation Preload 文档:https://developer.mozilla.org/docs/Web/API/NavigationPreloadManagerChrome 平台文档:https://developer.chrome.com/docs/workbox/navigation-preload/

发表评论 取消回复