2012-08-25 33 views
9

如果我編輯我的Web Worker腳本並刷新頁面,則Web Worker腳本是緩存版本。我有理由相信它不是我的網絡服務器,因爲我可以立即加載所有其他文件的最新副本,甚至重新啓動網絡服務器也不能解決問題。 它只加載最新版本的web worker腳本,如果我重新啓動chrome,效率非常低,不用說!即使我重新啓動Chrome,它也不能修復它。我能做些什麼來解決這個問題嗎?Chrome瀏覽器不加載最新版本的Web Worker腳本(運行緩存版本)

回答

7

您的網絡服務器決定給定網絡資源的可達到程度,瀏覽器嘗試尊重這些設置,緩存網絡服務器認爲可以緩存的資源,而不是緩存不應該緩存的內容。

如果你想改變這種狀況,您有以下選擇:

  1. 清除瀏覽器緩存手動
  2. 暫時關閉瀏覽器緩存。
  3. 臨時更改您的Web服務器上的設置,以指示瀏覽器不緩存
  4. 覆蓋的高速緩存僅這一個網頁(在某些瀏覽器轉向-F5)強制新內容重載
  5. 添加查詢參數添加到您每次需要加載新版本時更改的Web Worker腳本的URL。
+2

Chrome的硬刷新不刷新工作人員,而仍使用緩存版本。 – riv

+0

如果您仍然發現使用此答案您的服務人員未更新,請檢查它是否包含錯誤。由於如果serviceworker包含javascript錯誤並且無法安裝,舊版本仍將繼續使用。 –

+0

@BasGoossen - 如果你沒有意識到,這個問題是關於網絡工作者(在網頁中運行在不同線程中的腳本),而不是服務工作者(不同的東西)。 – jfriend00

3

你嘗試過硬刷新嗎? CTRL-R?

+0

Ctrl + R是一個常規刷新,我認爲...... Ctrl + Shift + R,也許? – Ryan

8

在我的Linux的Chrome我需要右鍵點擊(或長按)Reload按鈕並選擇「清空緩存並硬性重新加載」,以獲取最新版本

+0

什麼是長時間點擊? –

+0

要長時間點擊,請按住鼠標按鈕,直到菜單打開。 @布萊恩:我甚至都不知道那裏。由於某種原因,Ctrl + F5不能正常工作,但是這種方式非常完美。 –

+0

非常感謝@Brian,這爲我解決了它! –

0

在你install情況下,調用之前event.waitUntil地址:

if (self.skipWaiting) { self.skipWaiting(); } 

Source

此外,你可以按照這個開發流程:

  1. 配置您的服務器服務於服務人員的腳本爲不可緩存(緩存控制:無緩存)
  2. 後您更改了服務人員的腳本:
    1. 關閉所有但其中一個指着 到Web應用程序
    2. 按下Shift +重裝標籤繞過服務人員,以確保剩餘的選項卡不是服務工作者的控制
    3. 命中重載下讓 的較新版本服務人員c控制頁面。

Source

1

添加<script src="your_worker_path"></scripts>到頁面的頭,迫使緩存更新。
if(typeof window == "undefined"){...}中包含您的工人代碼,以避免它在頁面重新加載時啓動

0

您必須關閉打開此頁面的所有選項卡。只打開一個,然後按Ctrl + Shift + R進行刷新,則緩存將被清除。