2012-07-14 24 views
1

我有一個js文件,css和圖像的列表,不需要每次從服務器加載,但是如果在文件或錯誤修復中有任何更新,只有在那段時間我想從瀏覽器緩存中替換文件,我知道沒有訪問瀏覽器緩存,但有沒有其他方法可以這樣做?我的應用程序將被特定用戶(知名人士)使用,在那裏我可以在他們的系統中安裝任何程序,任何人都可以建議我有效地這樣做?我不想通過設置'no-cache'從服務器每次加載文件。有沒有什麼辦法來清除瀏覽器緩存使用js,至少我的域相關的文件?

回答

1

不,沒有。

Javascript無權訪問緩存 - 瀏覽器不會將此信息暴露給JavaScript引擎。

3

強制瀏覽器在某些時候刷新某些文件的最有效的方法是任意的額外的查詢字符串添加到鏈接:

<script type="text/javascript" src="http://mywebsite.com/js/scripttoload.js"></script> 

然後更改爲:

<script type="text/javascript" src="http://mywebsite.com/js/scripttoload.js?V=2"></script> 

下一頁瀏覽器會認爲這是一個新文件。有很多其他方式與標題等,但這很好運行

4

一個常用的技巧是設置文件的緩存爲持續的年齡,以便他們不被再次請求。但是,當您希望更新它們時,可以在問號後附加一個時間戳到文件名。 EG:

<link rel="stylesheet" href="style.css?123211212"/> 

每當數字發生變化,瀏覽器就認爲它是一個不同的文件並將重新下載它。如果號碼沒有改變,那麼它使用緩存版本。

0

我所做的是,作爲構建過程的一部分,將所有靜態引用的文件重命名爲涉及其md5散列的內容。然後我設置標題,以便在最大可能的時間內緩存它們。只要他們改變了,他們就會得到一個新的名字,所以不存在任何問題。

相關問題