簡體   English   中英

服務工作者多久刷新一次?

[英]How often Service Worker refreshes?

我使用create-react-app創建了一個應用create-react-app ,默認情況下它是一個漸進式Web應用程序(它加載此文件 )。

因此,現在每次部署新內容時,應用程序都不會刷新。 在提供緩存內容之前,它多久檢查一次新內容? 如何選擇保存緩存的時間?

根據此文檔 ,默認情況下,頁面的提取不會通過服務工作者,除非頁面請求本身通過服務工作者。 因此,您需要刷新頁面才能看到服務工作者的效果。

這是一個例子,其中它在3秒后添加狗的圖像。

<!DOCTYPE html>
An image will appear here in 3 seconds:
<script>
  navigator.serviceWorker.register('/sw.js')
    .then(reg => console.log('SW registered!', reg))
    .catch(err => console.log('Boo!', err));

  setTimeout(() => {
    const img = new Image();
    img.src = '/dog.svg';
    document.body.appendChild(img);
  }, 3000);
</script>

此外,根據此更新服務工作者 ,如果先前已安裝了服務工作者,但在刷新或頁面加載時可以使用新版本的工作服務器,則新版本將在后台安裝,但尚未激活。 只有在不再加載任何仍在使用舊服務工作者的頁面時,才會激活它。 只要仍然沒有加載此類頁面,新服務工作程序就會激活。

我不知道您的服務工作者代碼的詳細信息...但是,除非您清除它們,否則您預先緩存的資產(通常在安裝事件中)。 其他URL將通過fetch事件處理程序(如果沒有附加處理程序,則直接轉到網絡)。 在更新服務工作者之前,更新預緩存的邏輯不會更新。 安裝和激活事件僅針對每個版本的服務工作程序觸發一次,因此每個版本只觸發1次。 因此,您可以更改默認的預先緩存資產(URL)並更改緩存邏輯,或者將預先緩存的文件抽象到配置源並動態更新這些資產。 由於我不知道您的應用程序的目標是什么,因此很難為您提供問題的實際答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM