Navigation Preload 通过并行发起主文档请求消除 SW 冷启动首屏阻塞,需注册后显式启用 navigationPreload.enable(),fetch 中优先 await event.preloadResponse 并降级兜底。
Navigation Preload 不是“加快 Service Worker 启动”,而是让浏览器在 SW 启动过程中并行发起主文档请求,从而消除冷启动带来的首屏阻塞。关键在于它把原本串行的“SW 初始化 → 再发请求”变成“SW 初始化 + 请求同时进行”,真正压缩的是用户感知的等待时间。
仅注册 Service Worker 不会自动开启 Navigation Preload。必须在注册成功后,检查并调用 navigationPreload.enable():
/sw.js)registration.navigationPreload 是否存在(旧版浏览器不支持)registration.navigationPreload.setHeaderValue('X-Preload', 'true')
在 Service Worker 的 fetch 事件里,不能只依赖缓存或网络,而要主动等待预加载结果:
event.preloadResponse 获取预加载的 Response 对象(它是一个 Promise)event.respondWith() 外部提前 resolve 或忽略该 Promise,否则会触发“preload cancelled”错误Navigation Preload 只对导航请求(request.destination === 'document')有效,因此需明确区分资源类型:
立即学习“前端免费学习笔记(深入)”;
{ scope: '/' }),否则部分页面无法触发预加载install 阶段缓存大量 HTML,因为预加载本质是绕过缓存取网络最新版该功能已在 Chrome、Edge、Firefox 和 iOS Safari 11.3+ 中稳定支持,但仍需考虑降级:
navigator.serviceWorker?.ready 和 navigationPreload 能力,无则跳过启用逻辑event.preloadResponse 为 undefined 或 reject,也要有兜底响应skipWaiting() 和 clients.claim(),确保新版 SW 能及时接管,避免用户长期停留在旧版逻辑中Tplink路由器管理界面无法进入(如何解决Tplink路由器管理界面无法进入的问题)
如何通过Tplink路由器App添加设备(Tplink路由器App添加设备指南)
Tplink路由器App禁用设备功能详解(Tplink路由器App禁用设备查看指南)
如何正确安装Tplink路由器(Tplink路由器安装指南)
TPLink F80E路由器是哪个年代的产品(TPLink F80E路由器的生产年份是什么)
TPLink AC1900路由器的设置方法是什么(如何设置TPLink AC1900路由器)