ServiceWorkerRegistration.update()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.

ServiceWorkerRegistrationupdate 方法尝试更新 service worker。获得 worker 脚本的 URL,逐字节匹配新获取的 worker 和当前的 worker,存在差异的时候安装新的 worker。获取 worker 脚本的更新操作会忽略浏览器缓存的 24 小时前的内容。

备注: 这个特性也应用于 Web Workers.

语法

js
update()

参数

无。

返回

返回 Promise 在 resolve 时对应一个 ServiceWorkerRegistration 对象。

示例

下面的示例注册一个 service worker,然后绑定事件到按钮,这样你可以有需要时,明确的更新 server worker:

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

规范

Specification
Service Workers
# service-worker-registration-update

浏览器兼容性

BCD tables only load in the browser

参见