2017-01-20 86 views
3

服務工作者,我想用我的網站上兩個服務人員:一個爲我的PWA的經典脫機緩存(/sw.js)和其他類似的東西,它使用背景的本地數據庫「服務器」同步和推送(/sw-db.js)。由於後者往往要做大量的工作(阻塞事件循環幾ms),最好將它分開。兩個在同一時間

由於數據庫sw不用於提取請求,我會給它一個虛擬範圍,而sw.js是作用於整個域的。

做的第一,這是爲了響應「取」事件,也有助於代碼/ URL爲/sw-db.js(保持它在同步與網站的更新有點),或者是服務人員總是通過網絡更新。

回答

1

當您檢查更新時,您傳遞到navigatior.serviceWorker.register('/path/to/sw.js')sw.js腳本URL將始終繞過其他服務人員而被抓取。因此,要回答您的問題,其他服務人員的fetch處理程序將不會被觸發。

只要有一個服務人員腳本更新檢查的HTTP cache does come into play。所以你應該確保你爲你的用例設置了正確的HTTP緩存控制頭。

通常,服務工作者更新檢查由於導航到由服務工作人員控制的頁面而被觸發,但如果服務工作人員使用「虛擬」範圍,則最終不會控制任何頁面。也就是說,當服務工作人員處理程序syncpush事件時,您最終還會觸發更新檢查。我不確定每個syncpush是否會觸發檢查,或者只檢查其中的一部分,例如導致新服務人員產卵的檢查。但至少在某些時候會發生。

相關問題