Service worker 是一个注册在指定源和路径下的事件驱动 worker
。它采用 JavaScript 控制关联的页面或者网站,拦截并修改访问和资源请求,细粒度地缓存资源。你可以完全控制应用在特定情形(最常见的情形是网络不可用)下的表现。
Service worker 运行在worker
上下文,因此它不能访问 DOM。相对于驱动应用的主 JavaScript 线程,它运行在其他线程中,所以不会造成阻塞。它设计为完全异步,同步API(如 XHR
和 localStorage
)不能在 service worker 中使用。优品拍拍
出于安全考量,Service workers 只能由 HTTPS 承载,毕竟修改网络请求的能力暴露给中间人攻击会非常危险。在 Firefox 浏览器的用户隐私模式,Service Worke不可用。
**注意:**Service workers可以更细致地控制每一件事情,支持当操作出错时终止操作
**注意:**Service workers大量使用
Promise
,因为通常它们会等待响应后继续,并根据响应返回一个成功或者失败的操作。Promise 非常适合这种场景。