2010-09-23 63 views
4

我注意到,即使在您強制重載頁面(SHIFT + F5等)後,大多數瀏覽器(特別是Chrome)似乎都會緩存web worker腳本。我發現強制緩存更新的唯一可靠方法是在地址欄中輸入工作者腳本的路徑並強制單獨重新加載。強制重載/防止Web Workers緩存

很顯然,當試圖開發任何東西時,這是一種皇家的痛苦。有誰知道一種可靠的方法來停止緩存工作者腳本的瀏覽器或迫使它以簡單的方式重新加載它們?

回答

2

您是否嘗試過使用Cache-Control: no-cache HTTP標頭來避免緩存工作者腳本?通常您可以通過setting the appropriate HTTP headers獲得所需的緩存行爲。

+0

特別地,添加以下行到我的httpd.conf: '<文件index.html的> 標題附加緩存控制「公開的,必重新驗證」 ' – mrucci 2011-11-16 16:35:00

5

如果您無法訪問服務器配置文件,或者您的元標記沒有得到遵守,那麼快速的解決方法是將「web worker腳本」包含在html頭中。

<html> 
    <head> 
     <meta http-equiv="Cache-control" content="no-cache"> 
     <script src="jquery_or_other_lib.js"></script> 
     <script src="normal_site_scripts.js"></script> 
     <script src="webworker.js"></script> 
    </head> 
    <body> 
    </body 
    </html> 
2

一個古老的問題,以及我今天使用的一箇舊解決方案。在開發過程中,使用隨機數查詢字符串添加到worker文件中來創建Web Worker:

var worker = new Worker('path/to/worker/file.js'+'?'+(Math.random( )* 1000000));

記得在代碼投入生產之前刪除查詢字符串!