10

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

4

7 回答 7

14

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

于 2012-11-17T08:09:48.417 回答
7

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

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

  1. 手动清除浏览器缓存
  2. 暂时关闭浏览器缓存。
  3. 临时更改 Web 服务器上的设置以指示浏览器不要缓存
  4. 仅覆盖这个网页的缓存(某些浏览器中的 shift-F5)以强制重新加载新内容
  5. 将查询参数添加到您每次希望它加载新版本时更改的 Web 工作者脚本的 URL。
于 2012-08-25T18:01:21.610 回答
3

您是否尝试过努力刷新?Ctrl-R?

于 2012-08-25T17:54:45.560 回答
1

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

于 2015-06-11T09:59:21.910 回答
0

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

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

来源

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

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

来源

于 2015-06-06T17:37:49.540 回答
0

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

于 2017-03-11T08:05:29.820 回答
0

我发现的作品是:

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

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


我希望你找到了这个:chrome://inspect/#workers。您可以在此处终止工作人员

于 2019-05-23T09:13:20.580 回答