Chrome 未加载最新版本的 Web Worker 脚本(运行缓存版本)

问题描述 投票:0回答:7
如果我编辑 Web Worker 脚本并刷新页面,则 Web Worker 脚本是缓存版本。我有理由相信这不是我的网络服务器,因为我可以立即加载所有其他文件的最新副本,甚至重新启动网络服务器也无法解决问题。

如果我重新启动 chrome,它只会加载最新版本的 Web Worker 脚本,这是非常低效的,不用说! 即使我重新启动 chrome,它也无法修复它。我能做些什么来解决这个问题吗?

javascript google-chrome refresh web-worker
7个回答
17
投票
在我的 Linux Chrome 上,我必须右键单击(或长按)重新加载按钮并选择“清空缓存并硬重新加载”才能获取最新版本


7
投票
您的 Web 服务器确定给定 Web 资源的可缓存程度,浏览器会尝试尊重这些设置,缓存 Web 服务器认为可以缓存的资源,而不缓存它认为不应该缓存的内容。

如果您想改变这一点,您有以下选择:

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

3
投票
您尝试过硬刷新吗? Ctrl-r?


3
投票
我发现有效的是:

    打开一个新选项卡,其中包含 SharedWorker 脚本的 URL,
    • 例如“https://example.com/javascripts/mySharedWorker.js”
  • 您应该看到此选项卡包含脚本的缓存版本
  • 如果您然后按 Shift-Reload
  • that 选项卡,浏览器将被迫更新缓存文件
Chrome 在“shift-reload”上重新加载“资源”似乎是......变量。


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


1
投票
在您的

install

 活动中,在致电 
event.waitUntil
 之前添加:

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

来源

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

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

来源


1
投票

<script src="your_worker_path"></scripts>

 添加到页面头部以强制更新缓存。

if(typeof window == "undefined"){...}
 中包含您的工作人员代码,以避免它在页面重新加载时启动


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

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