在同一个服务工作者中处理service-worker.js有任何影响吗
Is there any effect of handling service-worker.js in the same service worker?
假设我的服务人员是sw.js
。如果我使用相同的服务工作者(sw.js
)预缓存或缓存此文件,会有任何影响吗?
例如,使用软件工具箱,
toolbox.precache(['sw.js']);
toolbox.router.get('/sw.js', toolbox.cacheOnly);
和,
navigator.serviceWorker.register('sw.js');
现在,这个服务工作者是否应该更新,或者浏览器是否会允许一个特殊的获取,检查URL是否与活动的ServiceWorkerURL完全匹配,并尊重服务工作者的24小时强制更新并接入网络?
来源https://www.w3.org/TR/service-workers/#service-工人注册更新:
update()在不咨询缓存的情况下ping服务器以获取此脚本的更新版本。这在概念上与UA每24小时最多进行一次的操作相同。
此外,来自https://www.w3.org/TR/service-workers/#update-算法,步骤4.8:
让response是使用r运行fetch的结果,如果缓存的条目超过1天,则强制执行网络fetch。
NO
更新请求根本不会通过服务工作者。
根据ServiceWorker规范-
更新算法中的点5.2-https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#update-算法
将请求的跳过服务工作者标志和请求的重定向模式设置为"error"。
fetch有一个https://fetch.spec.whatwg.org/#skip-服务工作者标志
- 仅为WebSocket连接设置(点2)
-
未为从文档发出的所有请求设置或取消设置
- 此标志是NOT公开的,您不能在请求中使用它
对于服务工作者更新,此标志是set,并且它不经过服务工作者生命周期事件-获取。与交叉检查
toolbox.router.get('/sw.js', function(...args) {
// never called
console.log(...args);
return toolbox.cacheOnly(...args);
});
使用此软件代码并尝试刷新页面,您永远无法使用此功能更新服务人员。只有当
fetch('/sw.js')
来自文档。
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 任何方式使AJAX调用Gmail API,而无需通过JS库
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 有没有任何方法可以使用node-js从不同的机器打开浏览器
- D3.js生成有效的SVG,但不显示任何内容
- 任何将(SSH)终端嵌入到一些HTML5表示系统中的想法(例如,show.js)
- HTML 5 和 3.js 代码不会在网页上显示任何内容
- 地理定位在Jsfidle中工作,但不在任何其他JS编辑器中
- Node JS,传统的数据结构?(如Set等),任何类似Java.util的node
- JS/CSS旋转的DIVS在任何屏幕的中间相遇
- 将href类插入JS文件(使用createLink)任何想法
- 在JS或jQuery或任何客户端脚本的帮助下,通过查看源代码读取源代码
- 节点.js“已调用回调”.但是没有任何其他回调
- 找不到在 create-js 中运行的动画,未列出任何错误
- JS/Jquery - 如果输入具有数组的任何名称,则返回关联的值
- Win7 IE9 youtube播放器js对象没有任何方法
- 如何将timbre.js缓冲区导出为.wav或任何其他音频文件格式
- TypeAhead.js没有显示任何输出Rails
- 是否有任何事件“;在$scope摘要完成时”;或“;在视图刷新时”;在Angular.js中
- 有Ember.js任何附加组件来路由请求