当前位置: 首页 > 知识库问答 >
问题:

如何更新服务人员?

谢麒
2023-03-14

情况:

在我的网站上。com/game,我在

navigator.serviceWorker.register('/service-worker.js',{范围: "/"});

在我的服务器上,“/service worker。js'的最大值为1d

问题:

服务人员。js有一个主要的bug。它总是显示一个空页面,无法获取任何内容<代码>服务人员。必须更改js

问题是,每当用户访问mywebsite时。com/game,它显示空页面,不再执行任何操作。我无法让客户端获取新的服务工作人员。js

如何让客户端获取新的service-worker.js

共有2个答案

蓬弘
2023-03-14

加上?v=1到您的脚本,如下所示。

navigator.serviceWorker.register('/service-worker.js?v=1', {scope: "/"});

并在更改Service Worker脚本时增加脚本版本数

淳于开畅
2023-03-14

您正在描述的内容—检查/service worker的更新。js-在本文所述的情况下,默认情况下自动发生:

如果发生以下任何情况,将触发更新:

  • 指向范围内页面的导航

所有现代web浏览器都将忽略您在/service worker上设置的任何缓存控制标题。默认情况下,js,并直接针对web服务器获取最新副本。

这个堆栈溢出答案有一些最佳实践,说明如果您希望修订后的service-worker.js文件表现得像一个“杀死开关”,它应该包含什么

 类似资料:
  • 我一直在阅读《html5rocks服务工作者简介》一文,并创建了一个基本的服务工作者,它可以缓存页面、JS和CSS,并按预期工作: 当我对CSS进行更改时,由于服务人员正在从缓存中正确返回CSS,因此不会拾取此更改。 我陷入困境的地方是,如果我要更改HTML、JS或CSS,我如何确保服务人员可以从服务器加载较新版本,而不是从缓存加载?我曾尝试在CSS导入上使用版本戳,但似乎不起作用。

  • 有一个问题,我们的一些用户有一个错误的服务工作者坐在他们的Facebook浏览器从我们的网站。 问题:Facebook App用户在访问我们在FB上共享的页面时,会在FB浏览器上看到我们的“您离线页面”。 错误似乎是旧版本的Google Workbox(3.6.1)使用Chrome75自动返回FB应用程序中的您离线页面。更新Workbox修复了它。 对Workbox的引用在service work

  • 我遵循angular的官方指南,成功安装了初始服务人员。接下来,我想尝试一下更新行为,得到了一个 无法读取未定义的属性id 其中as id指ngsw-worker.js方法中的client.id 我做的步骤是 注册SW,离线并重新加载(工作),关闭标签,但保持窗口打开 app.cmp.html更新代码 重建项目(ng build--prod) 打开新的Tab和应用程序(可以观察SW更新) 重新加载

  • 根据MDN上的本文件: 之后,每隔24小时左右下载一次。它的下载频率可能会更高,但必须每24小时下载一次,以防止糟糕的脚本被打扰太久。 Firefox和Chrome也是如此吗?还是只有当用户导航到站点时才会更新服务人员javascript?

  • 我使用sw-precache生成Polymer-CLI构建过程中的服务工作,因此它旨在更新更新文件的散列,以表示需要更新缓存。但是缓存中没有替换我更新的内容,因此如果我使用ctrl-r刷新,它将获得旧版本,但如果使用ctrl-shift-r刷新,它将获得新版本。原因可能是我的服务人员没有更新。 这份文件说 如果与当前相比,服务辅助程序文件中甚至有一个字节的差异,它就认为它是新的。 ,但如果我的新服

  • 需要更新时钟小部件的TextView每秒或每分钟变化。 我正在从AppWidgetProvider的onReceive调用服务: 我应该做什么来检查更新的时间,如果有,然后更新‘时间’文本视图… 任何一种都是非常非常非常感谢的