任何人都可以解釋如何確保如果我更新我的webapp,用戶獲得最新版本的文件?如何確保重新加載緩存的JavaScript和CSS文件?
我應該在腳本和css文件的末尾添加一個動態字符串?version=random
,並在我推出更新時進行更改?或者這裏的一般策略是什麼?
謝謝Boda Cydo。
任何人都可以解釋如何確保如果我更新我的webapp,用戶獲得最新版本的文件?如何確保重新加載緩存的JavaScript和CSS文件?
我應該在腳本和css文件的末尾添加一個動態字符串?version=random
,並在我推出更新時進行更改?或者這裏的一般策略是什麼?
謝謝Boda Cydo。
是的,你提到的方法是很常見的,是一個堅實的方法以十六進制格式化。
我個人使用我的文件的Subversion版本號,但是您可以使用對您有意義的任何內容,甚至是文件的最後更新時間戳。
StackOverflow的使用SVN版本號:
<script type="text/javascript" src="http://sstatic.net/so/js/master.js?v=6180">
</script>
正如你所提到的那樣,向樣式表/腳本URL添加查詢字符串是獲取對緩存版本「失效」時的控制權的巧妙方法。
我通常使用文件系統中相關文件的最後修改日期,而不是添加隨機字符串。爲了提高清涼因子,可以將日期轉換爲數字形式,建立網址時:-)
<script type="text/javascript" src="script.js?v=1750493C88"></script>
<link rel="stylesheet" type="text/css" href="style.css?v=1750493C88" />
我通常把?mtime
在名稱圖片,CSS文件和JavaScript文件的末尾,其中mtime
是文件的最後修改時間。
也可以使用版本號,每當文件發生更改時,版本號都會遞增。這適用於像jQuery這樣的官方版本的圖書館,但它往往比您自己網站的文件所需的更加繁瑣,而這些文件只是根據需要進行了簡單更改。當然,在這種情況下你仍然可以使用版本號,但是我傾向於發現它是不必要的繁瑣(是你需要維護的其他東西)。
事實證明,魷魚並沒有用GET參數緩存文件。如果你想讓squid緩存文件,你將不得不使用類似script.2010-02-14.js的東西。
「但是,這是更好的:mylogo.1.2.gif或mylogo.gif V = 1.2流行的代理爲了獲得高速緩存的好處 ,避免與查詢字符串 轉速,而是修訂版文件名本身?」。
出於好奇,該SVN修訂號碼如何被訪問? – skaffman 2010-01-31 21:54:51