2016-03-03 36 views
0

我正在偵聽服務工作者中的提取事件,並想知道何時對緩存提取的響應?停止服務工作者提取事件緩存特定文件

1)當提取事件被觸發? PreventDefault()停止它? 2)我是否需要緩存:在我的FETCH調用的INIT參數中不存儲? 3)它是否發生在event.respondWith()時間?

我有一個數據交付策略,旨在提供儘可能新鮮的數據,並且只在網絡速度緩慢時才進入緩存。但即使這樣,只要網絡抓取運行完成,就可以更新緩存。

沒有像INIT這樣的東西「no-cache」是不是我們存在FETCH只讀緩存的風險呢?

我(錯誤地?)假定緩存是選擇性的,我不得不用PUT()手動更新緩存。

+0

規範說這不應該發生: - –

回答

0

規格說,這不應該發生: -

https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#cache-lifetimes

5.2。瞭解緩存的使用期限

緩存實例不是瀏覽器的HTTP緩存的一部分。 Cache對象正是作者必須自己管理的。 Cache對象不會更新,除非作者明確要求它們是。除非作者刪除條目,否則Cache對象不會過期。緩存對象不會因爲服務工作者腳本被更新而消失。也就是說,緩存不會自動更新。更新必須手動管理。這意味着作者應該按名稱對緩存進行版本化,並確保僅使用可以安全操作的服務工作人員版本中的緩存。

2

https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#cache-lifetimes

緩存實例是不是瀏覽器的HTTP緩存

不要混淆緩存API的高速緩存中的HTTP緩存的一部分。

HTTP緩存駐留在服務工作者和網絡之間,因此,如果您希望瀏覽器不緩存(在HTTP緩存中)緩存響應,您必須在提取緩存時使用「無存儲」選項資源。

其他的緩存完全直接在你的控制之下,所以如果你沒有在它們中存儲任何東西,你不會從它們那裏得到任何東西。

+0

不錯,總結關於此主題的Mozilla博客帖子:https://hacks.mozilla.org/2016/03/referrer-and-cache-control-apis-for-fetch / –

-1

fetchEvent.respondWith()是否實際返回到它下面的代碼或執行和隱式RETURN。

這是一個「答案」,因爲我相信它可以解釋我在Chrome上看到的內容。