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

瀏覽器相容性

另見