Html ServiceWorker:浏览器未检测到新版本

Html ServiceWorker:浏览器未检测到新版本,html,caching,service-worker,Html,Caching,Service Worker,我正在试验基于的HTML5 ServiceWorker API。文章中提到 当用户导航到您的站点时,浏览器会尝试重新下载 在后台定义服务工作者的脚本文件。如果 相比之下,服务工作者文件中甚至有一个字节的差异 对于它目前拥有的,它认为它是“新的” 由此我得出结论,如果我要更改worker脚本文件中的任何内容,它将提示浏览器定义一个新版本,该版本将在引用旧版本worker的所有页面终止时生效 编辑:显然浏览器正在缓存serviceworker.js文件本身,这就是为什么没有获取新版本的原因。有人能

我正在试验基于的HTML5 ServiceWorker API。文章中提到

当用户导航到您的站点时,浏览器会尝试重新下载 在后台定义服务工作者的脚本文件。如果 相比之下,服务工作者文件中甚至有一个字节的差异 对于它目前拥有的,它认为它是“新的”

由此我得出结论,如果我要更改worker脚本文件中的任何内容,它将提示浏览器定义一个新版本,该版本将在引用旧版本worker的所有页面终止时生效

编辑:显然浏览器正在缓存serviceworker.js文件本身,这就是为什么没有获取新版本的原因。有人能告诉我如何避免缓存工作文件吗?我已经浏览了可用的在线演示,包括和上的演示

这是我的文件结构:

|- index.html
|- serviceworker.js // the actual worker
|- serviceworker-cache-polyfill.js
|- serviceworker-registration.js // contains the registration logic for the worker
|- style.css
我已将缓存配置为包含以下URL:

/style.css
问题不在于ServiceWorker的配置,而在于我的服务器缓存了该文件。我不能说我不觉得自己愚蠢我之前没有检查过

作为将来的参考,我正在使用,默认情况下,它会将所有文件缓存1小时。您可以通过传入c参数来覆盖此选项。要完全禁用缓存,请传入-1:

编辑以下内容,其中包含如何使用ServiceWorker进行开发的良好摘要:

为了保证您的服务人员的最新版本 正在使用脚本,请按照以下说明操作:

将本地服务器配置为将Service Worker脚本作为不可缓存的缓存控制:无缓存 在您对服务进行更改之后 工作脚本: 关闭指向web应用程序的所有选项卡(只有一个除外) 点击轮班重新加载以绕过服务人员,以确保 剩余选项卡不在服务人员的控制下 打 重新加载以让较新版本的Service Worker控制 页
问题不在于ServiceWorker的配置,而在于我的服务器缓存了该文件。我不能说我不觉得自己愚蠢我之前没有检查过

作为将来的参考,我正在使用,默认情况下,它会将所有文件缓存1小时。您可以通过传入c参数来覆盖此选项。要完全禁用缓存,请传入-1:

编辑以下内容,其中包含如何使用ServiceWorker进行开发的良好摘要:

为了保证您的服务人员的最新版本 正在使用脚本,请按照以下说明操作:

将本地服务器配置为将Service Worker脚本作为不可缓存的缓存控制:无缓存 在您对服务进行更改之后 工作脚本: 关闭指向web应用程序的所有选项卡(只有一个除外) 点击轮班重新加载以绕过服务人员,以确保 剩余选项卡不在服务人员的控制下 打 重新加载以让较新版本的Service Worker控制 页
这确实可以解释这种行为。更新逻辑确实尊重HTTP缓存控制头,但最长可达24小时,以避免被使用缓存控制的坏软件卡住:1年头。

这确实可以解释这种行为。更新逻辑确实尊重HTTP缓存控制标头,但最长可达24小时,以避免被缓存控制:1年标头提供的已损坏软件卡住。

如果出现这种情况,您可以始终使用缓存buster或重命名serviceworker。仅当安装serviceworker的页面未被损坏的版本缓存时,此操作才有效。可能出现这种情况,您可以始终使用缓存buster或重命名serviceworker。仅当安装serviceworker的页面未被损坏的版本缓存时,此操作才有效。
http-server -c-1