2011-04-21 70 views
4

ASP.NET 4.0多久瀏覽器緩存(.js文件)存在

如果我更新的網頁我的js文件,但它似乎客戶端的瀏覽器不下載新的.js文件(因瀏覽器緩存?)。什麼因素可能會影響舊的.js文件保留在客戶端的PC上?有什麼辦法可以強制客戶端下載新的.js文件嗎?

編輯: 我還有另外一個問題 - 多長時間瀏覽器保持.js文件緩存?它是否受客戶端瀏覽器設置控制?

回答

7

一個簡單的方法來讓瀏覽器重新下載一個文件是一個查詢字符串添加到URL

/myfile.js?v=1 
8

好,您的生產文件沒有suposed頻繁恰克,儘量把一個版本上您的文件名,像jQuery,一個新版本產生這樣的新名稱的文件:

/myfile.1.0.0.js 

到:

/myfile.1.0.1.js 
1

一般而言,瀏覽器會根據請求的確切網址(使用查詢參數)緩存來自服務器的響應。當瀏覽器再次請求完全相同的URL時,將使用緩存的副本。 (當然有緩存策略,但讓我們假設簡單的場景)

因此,要強制瀏覽器獲取文件的新副本,只需更改該文件的請求的URL。您要麼更改文件的名稱,要麼保留名稱,只更改查詢參數。

如果您開發的頁面,你可以改變它,那麼你可以使用頁面上創建JavaScript的鏈接的自動方式

<script type="text/javascript" src="/myfile.js?modified=XXXXX"> 
</script> 

XXXX被programmaticaly設置的DateModified信息蜱myfile.js在每個頁面呈現。因此,無論何時修改此文件,輸出腳本的鏈接都會自動更改爲新值,並且瀏覽器將被迫再次下載它。

例如,如果我有一個funcs.js文件,渲染輸出會是這樣的

<script type="text/javascript" src="/funcs.js?modified=43253452352342"> 
</script> 

以後,如果文件被更改,渲染將改變爲類似

<script type="text/javascript" src="/funcs.js?modified=43253456789678"> 
</script> 

變更修改查詢參數將強制瀏覽器再次下載文件