ServiceWorkerRegistration: update() 方法

Baseline 已广泛支持

此功能已成熟,可跨多种设备和浏览器版本工作。它自 ⁨2018 年 4 月⁩ 起已在所有浏览器中可用。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

注意:此功能在 Web Workers 中可用。

ServiceWorkerRegistration 接口的 update() 方法用于尝试更新 service worker。它会抓取 worker 的脚本 URL,如果新 worker 与当前 worker 的字节不完全相同,它就会安装新 worker。如果上次抓取发生在 24 小时前,则抓取 worker 会绕过任何浏览器缓存。

语法

js
update()

参数

无。

返回值

一个 Promise,它会解析为一个 ServiceWorkerRegistration 对象。

示例

以下简单示例注册了一个 service worker 示例,然后为按钮添加了一个事件处理程序,以便您可以在需要时显式更新 service worker。

js
if ("serviceWorker" in navigator) {
  navigator.serviceWorker
    .register("/sw.js", { scope: "/" })
    .then((registration) => {
      // registration worked
      console.log("Registration succeeded.");
      button.onclick = () => {
        registration.update();
      };
    })
    .catch((error) => {
      // registration failed
      console.error(`Registration failed with ${error}`);
    });
}

规范

规范
Service Workers
# service-worker-registration-update

浏览器兼容性

另见