2010-01-31 77 views
7

任何人都可以解釋如何確保如果我更新我的webapp,用戶獲得最新版本的文件?如何確保重新加載緩存的JavaScript和CSS文件?

我應該在腳本和css文件的末尾添加一個動態字符串?version=random,並在我推出更新時進行更改?或者這裏的一般策略是什麼?

謝謝Boda Cydo。

回答

4

是的,你提到的方法是很常見的,是一個堅實的方法以十六進制格式化。

我個人使用我的文件的Subversion版本號,但是您可以使用對您有意義的任何內容,甚至是文件的最後更新時間戳。

StackOverflow的使用SVN版本號:

<script type="text/javascript" src="http://sstatic.net/so/js/master.js?v=6180"> 
</script> 
+0

出於好奇,該SVN修訂號碼如何被訪問? – skaffman 2010-01-31 21:54:51

0

正如你所提到的那樣,向樣式表/腳本URL添加查詢字符串是獲取對緩存版本「失效」時的控制權的巧妙方法。

我通常使用文件系統中相關文件的最後修改日期,而不是添加隨機字符串。爲了提高清涼因子,可以將日期轉換爲數字形式,建立網址時:-)

<script type="text/javascript" src="script.js?v=1750493C88"></script> 
<link rel="stylesheet" type="text/css" href="style.css?v=1750493C88" /> 
1

我通常把?mtime在名稱圖片,CSS文件和JavaScript文件的末尾,其中mtime是文件的最後修改時間。

也可以使用版本號,每當文件發生更改時,版本號都會遞增。這適用於像jQuery這樣的官方版本的圖書館,但它往往比您自己網站的文件所需的更加繁瑣,而這些文件只是根據需要進行了簡單更改。當然,在這種情況下你仍然可以使用版本號,但是我傾向於發現它是不必要的繁瑣(是你需要維護的其他東西)。

4

事實證明,魷魚並沒有用GET參數緩存文件。如果你想讓squid緩存文件,你將不得不使用類似script.2010-02-14.js的東西。

「但是,這是更好的:mylogo.1.2.gif或mylogo.gif V = 1.2流行的代理爲了獲得高速緩存的好處 ,避免與查詢字符串 轉速,而是修訂版文件名本身?」。

http://webcache.googleusercontent.com/search?q=cache:JhDnwSNN-BEJ:www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/+http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/&cd=1&hl=en&ct=clnk&gl=us&client=opera&source=www.google.com

相關問題