Service Worker
Service Worker是一种在浏览器后台独立于网页主线程运行的脚本程序,属于Web API的组成部分。它充当浏览器与网络之间的代理层,能够拦截和处理网络请求、管理缓存资源,从而实现离线访问、页面性能优化、消息推送及后台数据同步等功能。Service Worker基于事件驱动模型运行,仅支持HTTPS环境,是构建渐进式Web应用(PWA)的核心技术之一。
核心事实
时间轴 (近 90 天)
Service Worker 缓存静态资源后应用可完全离线使用,但记账应用的核心数据在 localStorage 中,Service Worker 并不缓存数据本身,且因为无服务器,离线录入的交易恢复网络后不会自动同步。
该应用通过 Web App Manifest 和 Service Worker 支持被“安装”到 Android 或 iOS 主屏幕,以独立窗口运行,隐藏浏览器地址栏,获得接近原生应用的体验。
Service Worker 要求页面运行在 HTTPS 或 localhost 下,并且完全异步、不能直接访问 DOM。
localStorage 和 IndexedDB 的数据与特定域名和浏览器实例绑定,清除浏览器数据、更换浏览器或设备都会导致数据不可访问;它们不参与 Service Worker 的缓存机制,无法自动同步到服务器。
Service Worker 是运行在后台的脚本,可拦截网络请求并缓存资源,从而实现离线访问与快速加载,其生命周期包括 install、activate、fetch 等事件。
Fetch API 是 2015 年前后随 Service Worker 一同标准化的新一代网络请求接口,基于 Promise 设计。
GrassToucher 实现了 Service Worker(sw.js),通过 cache.put() 的缓存回退策略,使应用在离开网络信号覆盖区时仍能响应和运行
Go Outside 使用 Service Worker 的 Cache Storage API 将权重和应用本体持久化到本地,实现首次成功加载后即便断网也能完整使用包括模型推理在内的功能
部分进阶项目引入 Service Worker 来模拟文件系统,或使用 WebAssembly 运行真实的 Unix 工具链
离线可用通常借助PWA技术,通过Service Worker在首次访问时将关键资源缓存到本地,后续访问可绕过网络从缓存加载
还有 13 条时间轴事件
全部知识事实 (20)
PWA是Google在2015年前后大力推广的一种Web应用形态,依赖Service Worker、Web App Manifest和HTTPS三项关键技术
80%已验证Manifest V3将原本长期驻留后台的Background Page替换为Service Worker
75%已验证PWA 的三个核心技术组件是 Service Worker、Web App Manifest 和强制性的 HTTPS 连接
70%已验证Service Worker本质上是一个在浏览器后台独立运行的脚本线程,充当Web应用与网络之间的代理层,能拦截网络请求
65%待验证Service Worker是运行在浏览器主线程之外的独立JavaScript工作线程,具有安装、激活和运行三个生命周期阶段
95%待验证Service Worker需要HTTPS环境才能注册,且不支持IE浏览器
95%待验证Chrome的Service Worker在空闲约30秒后会被浏览器主动终止以节省内存和CPU资源
80%待验证PWA 通过 Service Worker 实现离线缓存和后台同步,通过 Web Push API 实现推送通知
60%待验证Apple 直到 2018 年才在 Safari 中支持 Service Worker,iOS 16.4 开始有条件地支持 Web Push 推送通知
60%待验证Service Worker 缓存静态资源后应用可完全离线使用,但记账应用的核心数据在 localStorage 中,Service Worker 并不缓存数据本身,且因为无服务器,离线录入的交易恢复网络后不会自动同步。
50%待验证该应用通过 Web App Manifest 和 Service Worker 支持被“安装”到 Android 或 iOS 主屏幕,以独立窗口运行,隐藏浏览器地址栏,获得接近原生应用的体验。
50%待验证Service Worker 要求页面运行在 HTTPS 或 localhost 下,并且完全异步、不能直接访问 DOM。
50%待验证localStorage 和 IndexedDB 的数据与特定域名和浏览器实例绑定,清除浏览器数据、更换浏览器或设备都会导致数据不可访问;它们不参与 Service Worker 的缓存机制,无法自动同步到服务器。
50%待验证Service Worker 是运行在后台的脚本,可拦截网络请求并缓存资源,从而实现离线访问与快速加载,其生命周期包括 install、activate、fetch 等事件。
50%待验证Fetch API 是 2015 年前后随 Service Worker 一同标准化的新一代网络请求接口,基于 Promise 设计。
50%待验证GrassToucher 实现了 Service Worker(sw.js),通过 cache.put() 的缓存回退策略,使应用在离开网络信号覆盖区时仍能响应和运行
50%待验证Go Outside 使用 Service Worker 的 Cache Storage API 将权重和应用本体持久化到本地,实现首次成功加载后即便断网也能完整使用包括模型推理在内的功能
50%待验证部分进阶项目引入 Service Worker 来模拟文件系统,或使用 WebAssembly 运行真实的 Unix 工具链
50%待验证离线可用通常借助PWA技术,通过Service Worker在首次访问时将关键资源缓存到本地,后续访问可绕过网络从缓存加载
50%待验证Service Worker可在后台下载新版本资源,待下载完成后通过消息通知主页面,由用户主动决定何时激活新版本
50%