gpt4 book ai didi

google-chrome - Chrome 开发者工具 "disable cache": what does it actually do apart from nothing (for service worker scripts)?

转载 作者:行者123 更新时间:2023-12-04 01:58:30 27 4
gpt4 key购买 nike

我试图在本地磁盘缓存为空的假设下测试我的站点的行为。我知道有很多方法可以清除缓存并每次执行 Ctrl-F5 等操作,但是“网络”选项卡中还有一个“禁用缓存”复选框,它似乎应该执行我想要的操作...即禁用缓存。

但是,当我清除缓存、启用该选项并 F5 重新加载我的网站几次时,我看到的是:

enter image description here

尽管启用了“禁用缓存”,但资源已被缓存,并且正在从缓存中提供服务!那么这个选项实际上有什么作用呢?

编辑

也许我看到的这种行为仅与服务 worker 脚本的缓存有关?如果您加载 this page (从 this guide 链接到服务人员的示例),至少对我来说是 sw.js即使启用了“禁用缓存”,也会从磁盘缓存中获取文件。

最佳答案

有趣的问题!

在您提供的屏幕截图中,姓名 列被切断,所以我无法判断磁盘缓存仍在提供哪些资源。根据您的“编辑”中的描述,我假设它是一个服务 worker 脚本。

那么,我要回答的问题是“浏览器如何缓存 Service Worker (SW) 脚本?”

  • 当 SW 被注册时,浏览器会将 SW 脚本存储在磁盘缓存中的单独数据库中。我将其称为 SW 数据库,但请注意,这不是官方术语。请注意,如果 service worker 调用 importScripts() ,这些脚本也存储在 SW 数据库中。另请注意,当 Service Worker 脚本更新时,浏览器会使用新脚本覆盖 SW 数据库中当前存储的脚本。这是Chrome implementation ,其他浏览器可能会有所不同。 1
  • 每次加载页面时,浏览器都会发出一个不可见的请求(即您在 DevTools 中看不到),以查看 Service Worker 脚本是否有任何更新。 IMO、DevTools 应公开此请求,以便开发人员更好地了解软件生命周期。
  • 如果脚本的一个字节不同,则浏览器更新软件数据库中的软件脚本。
  • 如果 SW 脚本没有改变,浏览器只提供来自 SW 数据库的脚本。这是您在 DevTools 中看到的请求。 IMO,DevTools 将此请求描述为 (from disk cache) 具有误导性。 .理想情况下,它应该有一些其他名称来表明此缓存不受 的影响。禁用缓存 复选框。

  • 所以,在这种情况下,你是对的: 禁用缓存 复选框什么也不做。如果你想确保你的缓存被完全清除(包括 service worker 的东西):
  • 转至 Clear Storage pane ,确保所有复选框都已启用,然后单击 清除站点数据 .
  • 在 DevTools 仍然打开时,长按 Chrome 的 重新加载 按钮,然后选择 清空缓存和硬重新加载 .见 https://stackoverflow.com/a/14969509/1669860对这些不同选项的解释。

    Empty cache and hard reload

  • 1 我从 Alex Russell 那里得到了这个信息,他是 Chrome 工程师和 service worker 规范的合著者

    关于google-chrome - Chrome 开发者工具 "disable cache": what does it actually do apart from nothing (for service worker scripts)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46341392/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com