Service Worker 是运行在浏览器后台的可编程网络代理,独立于主线程,支持拦截请求、管理缓存、推送通知,实现离线访问与性能优化;仅支持 HTTPS(localhost 除外),无法访问 DOM 或 window,需手动处理更新逻辑。
Service Worker 是运行在浏览器后台的脚本,独立于网页主线程,能拦截和处理网络请求、管理缓存、推送通知,是实现离线访问和性能优化的核心机制。
Service Worker 本质是浏览器与服务器之间的中间层。注册后,它能监听 fetch 事件,决定某个请求是走网络、读缓存,还是返回自定义响应。
持页面基本可用传统网页断网就白屏,而 Service Worker 可预先缓存关键资源(如 HTML、核心 JS、离线页面),让用户即使没网也能打开首页、浏览已加载内容、提交表单(稍后同步)。
相比 HTTP 缓存头,Service Worker 让开发者完全掌控缓存生命周期:按需缓存、按规则清理、动态生成响应,避免“缓存爆炸”或“缓存失效”问题。
基本上就这些。它不复杂但容易忽略细节——比如作用域限制、更新时机、调试方式。用好它,网页就能像原生应用一样快又可靠。