即使没有使用sw.js加载HTML,服务工作者缓存是否在站点范围内工作?

时间:2017-12-19 20:31:16

标签: javascript service-worker

服务工作者缓存是否在站点范围内工作,无论用户是否实际上在加载了sw.js的HTML页面上?

例如: 假设...

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

如果用户要直接访问浏览器中的任何JPG或CSS文件,浏览器是否通过服务工作者运行请求和/或自己识别那些本地文件,从而呈现本地缓存的文件?

1 个答案:

答案 0 :(得分:1)

一个服务工作者被激活,只要有:{/ p>,就会触发其fetch处理程序

  • 导航到服务工作者范围下的URL。
  • 由服务工作者范围内的客户端页面发出的URL请求。 (例如请求图像或样式表等)

如果要直接导航到服务工作者范围下的URL,即使该URL与HTML文档不对应,服务工作者的fetch处理程序也有机会响应。< / p>

如果您的服务工作者有一个fetch处理程序,该处理程序始终使用给定URL的缓存版本进行响应,那么是,即使资产是图像或样式表,也可以使用该响应来完成导航别的什么。

你可以自己测试一下:

  1. 访问像https://images.guide/这样的网站,它安装服务工作者,缓存大量资源,并使用fetch处理程序通过缓存响应预先缓存资源的请求。
  2. 离线。
  3. 导航到预先缓存的网址,例如https://images.guide/images/hamburger.svg
  4. 您将看到预先缓存的资源用于响应导航请求。