猿问
下载APP

服务工作者JavaScript更新频率(每24小时?)

服务工作者JavaScript更新频率(每24小时?)

根据MDN上的这个文档

之后每24小时左右下载一次。它可以更频繁地下载,但必须每24小时下载一次,以防止坏脚本长时间烦人。

Firefox和Chrome也是如此吗?或者更新到服务工作者javascript只在用户导航到网站时发生?


德玛西亚99
浏览 192回答 3
3回答

撒科打诨

注意:从Firefox 57和Chrome 68以及支持服务工作者的Safari和Edge版本开始,默认行为已更改为考虑更新的服务工作者规范。在这些浏览器中,默认情况下,在检查服务工作者脚本以获取更新时,将忽略HTTP缓存指令。以下说明仍适用于早期版本的Chrome和Firefox。每次导航到服务工作者范围内的新页面时,Chrome都会为传入navigator.serviceWorker.register()调用的JavaScript资源发出标准HTTP请求。我们假设它被命名了service-worker.js。该请求仅与导航结合或者当通过例如push事件唤醒服务工作者时进行。有没有一个后台进程,每个重新提取服务人员脚本每24小时,或任何自动化这样的。此HTTP请求将遵循标准HTTP缓存指令,但有一个例外(将在下一段中介绍)。例如,如果您的服务器设置了适当的HTTP响应标头,表明缓存的响应应该使用1小时,那么在下一个小时内,浏览service-worker.js器的缓存将满足浏览器的请求。请注意,我们不是在讨论与此情况无关的Cache Storage API,而是标准的浏览器HTTP缓存。标准HTTP缓存规则的一个例外,就是24小时内出现的情况,如果service-worker.jsHTTP缓存中条目的年龄超过24小时,浏览器将始终进入网络。因此,在功能上,使用max-age1天或1周或1年没有区别- 他们都将被视为max-age1天。浏览器供应商希望确保开发人员不会意外地推出service-worker.js服务时间max-age为1年的“损坏”或错误,从而使用户长时间处于持久,破碎的Web体验之下。(您不能依赖于您的用户知道清除其网站数据或转移重新加载网站。)一些开发人员更喜欢service-worker.js使用响应标头显式提供服务,从而导致禁用所有HTTP缓存,这意味着service-worker.js每个导航都会发出网络请求。另一种方法可能是使用非常非常短的max-age一分钟来提供某种程度的节流,以防来自单个用户的大量快速导航。如果你真的想最大限度地减少请求,并且有信心你不会service-worker.js很快更新你的,你就可以自由设置max-age24小时,但是我建议你选择一些更短的东西,你可能需要重新部署。

蝴蝶刀刀

“如果我的应用程序24小时与互联网断开连接,它将停止工作”是不正确的。您离线时将继续使用以前缓存的内容和以前缓存的服务工作者JS文件。此帖子包含与您何时在线时相关的详细信息,以及当时检查更新的频率。

宝慕林4294392

>他们都将被视为最大年龄为1天。这不是很打败服务工作者的目的吗?如果我的应用程序24小时与互联网断开连接,它将停止工作,我无能为力吗?所有这一切只是为了让用户不必知道清除缓存,或者开发人员将缓存破坏者添加到他们的URL中。我错过了什么吗?
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答