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

问题描述 投票:0回答:1

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

例如:假设......

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

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

javascript service-worker
1个回答
1
投票

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

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

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

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

你可以自己测试一下:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.