Google chrome 镀铬工具“;禁用缓存";:它除了什么都不做之外实际上做了什么(对于服务工作者脚本)?
我试图在假设本地磁盘缓存为空的情况下测试我的站点的行为。我知道每次都有清除缓存和执行Ctrl-F5等操作的方法,但在网络选项卡中还有一个“禁用缓存”复选框,它似乎应该执行我所要执行的操作。。。i、 e.禁用缓存 但是,当我清除缓存、启用该选项并F5重新加载我的站点几次时,我看到的是: 尽管启用了“禁用缓存”,但资源已被缓存,并且正在从缓存提供服务!那么这个选项实际上做了什么呢 编辑Google chrome 镀铬工具“;禁用缓存";:它除了什么都不做之外实际上做了什么(对于服务工作者脚本)?,google-chrome,google-chrome-devtools,service-worker,progressive-web-apps,Google Chrome,Google Chrome Devtools,Service Worker,Progressive Web Apps,我试图在假设本地磁盘缓存为空的情况下测试我的站点的行为。我知道每次都有清除缓存和执行Ctrl-F5等操作的方法,但在网络选项卡中还有一个“禁用缓存”复选框,它似乎应该执行我所要执行的操作。。。i、 e.禁用缓存 但是,当我清除缓存、启用该选项并F5重新加载我的站点几次时,我看到的是: 尽管启用了“禁用缓存”,但资源已被缓存,并且正在从缓存提供服务!那么这个选项实际上做了什么呢 编辑 也许我看到的这种行为只与服务工作者脚本的缓存有关?如果加载(从链接到服务人员的示例),至少对我来说,即使启用了“
也许我看到的这种行为只与服务工作者脚本的缓存有关?如果加载(从链接到服务人员的示例),至少对我来说,即使启用了“禁用缓存”,也会从磁盘缓存中获取
sw.js
文件。除了禁用缓存选项之外,在开发人员工具的网络窗格上,现在可以右键单击并从弹出菜单中选择“清除缓存”
此外,如果需要经常清除缓存,可以使用此插件:
有趣的问题
在您提供的屏幕截图中,Name列被切断,因此我无法判断磁盘缓存仍在提供哪些资源。根据“编辑”中的描述,我将假设它是一个服务工作者脚本
那么,我要回答的问题是“浏览器缓存服务工作者(SW)脚本是如何工作的?”
- 如果脚本的一个字节不同,则浏览器会更新软件数据库中的软件脚本
- 如果软件脚本没有更改,浏览器只提供来自软件数据库的脚本。这是您在DevTools中看到的请求。在我看来,DevTools将此请求描述为
,这是一种误导。理想情况下,它应该有一些其他名称来指示此缓存不受禁用缓存复选框的影响(从磁盘缓存)
1我从Chrome工程师、《服务人员规范》的合著者Alex Russell那里得到了这个信息。为什么不尝试以匿名模式打开网页?@mrid是的,我可以,但我只想知道这个选项的目的是什么。。。以防我错过了一些非常重要的东西exciting@wOxxOm我在我编辑的帖子中提供了一个例子。。。我开始怀疑是否有一些特殊的(可能是错误的?)处理服务工作者脚本特别。。。即使启用了该选项,也会从磁盘缓存中提取。在启用了“禁用缓存”选项的情况下,您是否也看到了从缓存中获取的
sw.js
?回答得很好,而且提到了通过importScripts()导入的脚本,这让您倍感荣幸。
。。。我在我的服务人员中使用。不过你说得对,在服务工作者生命周期中对所有请求都有完整的可见性会更好,这样我们就可以更好地了解发生了什么。第二个建议(按重新加载按钮)没有帮助,但使用“清除存储”清除缓存确实有帮助。随后的重新加载工作正常,所以看起来像个bug。