繁体   English   中英

即使不使用sw.js加载HTML,服务工作者是否也会在整个站点范围内缓存工作?

[英]Does a service worker cache work site-wide, even without loading an HTML with sw.js?

服务工作者是否在整个站点范围内缓存工作,而不管用户是否实际上位于已加载sw.js的HTML页面上?

例如:假设...

  • 用户浏览器上的注册服务人员
  • 使用由sw控制的本地缓存
  • 本地缓存中缓存了一些文件,包括html,js,css和一些jpg

如果用户要在其浏览器中直接访问这些JPG或CSS文件中的任何一个,浏览器是否通过服务工作者运行请求,并且/或者仅凭自身识别这些本地文件,从而呈现本地缓存的文件?

一个服务工作者被激活,只要有以下情况,就会触发其fetch处理程序:

  • 服务工作者作用域下的URL导航。
  • 客户页面发出的对URL的请求,该页面位于服务工作者的范围内。 (例如对图像或样式表的请求等)

如果您要直接导航到服务人员的作用域下存在的URL,即使该URL不对应于HTML文档,服务人员的fetch处理程序也将有机会做出响应。

如果您的服务人员有一个fetch处理程序,该处理程序始终使用给定URL的缓存版本进行响应,那么可以,即使资产是图像,样式表或其他内容,该响应也将用于完成导航。

您可以自己测试一下:

  1. 访问类似于https://images.guide/的站点,该站点将安装服务工作程序,缓存大量资源,并使用fetch存处理程序通过缓存响应对预缓存资源的请求。
  2. 下线。
  3. 导航到预缓存的URL,例如https://images.guide/images/hamburger.svg

您将看到预缓存的资源用于响应导航请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM