【问题标题】:Chrome not loading latest version of web worker script (runs a cached version)Chrome 未加载最新版本的网络工作者脚本(运行缓存版本)
【发布时间】:2012-08-20 21:28:59
【问题描述】:

如果我编辑我的 web worker 脚本并刷新页面,web worker 脚本是一个缓存版本。我有理由相信它不是我的网络服务器,因为我可以立即加载所有其他文件的最新副本,即使重新启动网络服务器也不能解决问题。 如果我重新启动 chrome,它只会加载最新版本的 web worker 脚本,这是非常低效的,不用说! 即使我重新启动 chrome 也无法修复它。有什么办法可以解决这个问题吗?

【问题讨论】:

    标签: javascript google-chrome refresh web-worker


    【解决方案1】:

    在我的 Linux Chrome 上,我必须右键单击(或长按)重新加载按钮并选择“Empty Cache and Hard Reload”以获取最新版本

    【讨论】:

    • 要长按鼠标,直到菜单打开。 @Brian:我什至不知道那是在那里。 Ctrl+F5 出于某种原因无法正常工作,但效果很好。
    【解决方案2】:

    您的网络服务器确定给定网络资源的可缓存程度,并且浏览器尝试尊重这些设置,缓存网络服务器表示可以缓存的资源,而不是缓存它说不应该缓存的内容。

    如果你想改变它,你有以下选择:

    1. 手动清除浏览器缓存
    2. 暂时关闭浏览器缓存。
    3. 暂时更改您的网络服务器上的设置以指示浏览器不要缓存
    4. 仅覆盖这一网页的缓存(在某些浏览器中为 shift-F5)以强制重新加载新内容
    5. 将查询参数添加到您希望每次加载新版本时更改的 Web Worker 脚本的 URL。

    【讨论】:

    • Chrome的硬刷新不刷新worker,仍然使用缓存版本。
    • 如果你仍然发现这个答案你的 serviceworker 没有更新,检查它是否包含错误。因为如果 serviceworker 包含 javascript 错误并且安装失败,旧版本仍将继续使用。
    • @BasGoossen - 如果您没有意识到,这个问题是关于网络工作者(在网页的不同线程中运行的脚本),而不是服务工作者(不同的事物)。
    • @jfriend00 哎呀,我的错。可能仍然适用于网络工作者吗?最近经常和服务人员一起工作,所以造成了混乱。
    • @BasGoossen - 没有 webWorker 功能可以在新脚本出错后自动加载旧脚本。
    【解决方案3】:

    您是否尝试过重刷? Ctrl-r?

    【讨论】:

    • Ctrl+R 是定期刷新,我认为... Ctrl+Shift+R,也许吧?
    【解决方案4】:

    <script src="your_worker_path"></scripts> 添加到您的页头以强制更新缓存。
    if(typeof window == "undefined"){...} 中包含您的工作人员的代码,以避免它在页面重新加载时开始

    【讨论】:

      【解决方案5】:

      在您的install 事件中,在调用event.waitUntil 之前添加:

      if (self.skipWaiting) { self.skipWaiting(); }
      

      Source

      此外,您可以遵循以下开发工作流程:

      1. 配置您的服务器以将您的 Service Worker 脚本作为不可缓存(缓存控制:无缓存)提供服务
      2. 对 Service Worker 脚本进行更改后:
        1. 关闭除一个指向的选项卡之外的所有选项卡 到您的网络应用程序
        2. 点击 shift-reload 绕过 service worker 以确保剩余的选项卡不受控制 服务人员的
        3. 点击重新加载以让更新版本的 Service Worker 控制页面。

      Source

      【讨论】:

        【解决方案6】:

        您必须关闭所有打开此页面的选项卡。只打开一个 1 然后 Ctrl + Shift + R 刷新即可清除缓存。

        【讨论】:

          【解决方案7】:

          我发现的作品是:

          • 打开一个新选项卡,其中包含 SharedWorker 脚本的 URL,
          • 您应该会看到此选项卡包含脚本的缓存版本
          • 如果您随后 Shift-Reload 那个选项卡,浏览器将强制更新缓存文件

          Chrome 在“shift-reload”上重新加载“资源”似乎是……变量。


          我希望你找到了这个:chrome://inspect/#workers。你可以在这里终止工人

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-03-27
            • 2014-10-30
            • 2014-06-17
            • 2023-03-09
            • 2013-02-17
            • 1970-01-01
            • 2017-08-21
            • 2021-07-09
            相关资源
            最近更新 更多