2009-10-23 104 views

回答

27

避免緩存CSS。
如果網站更新他們的CSS他們更新ver到一個更高的數字,因此瀏覽器被迫獲得一個新的文件,而不是使用緩存的以前的版本。
否則瀏覽器可能會得到一個新的HTML代碼和舊的CSS,並且網站的某些元素可能看起來破碎。

+2

作爲補充說明,您可以添加請求的時間戳而不是版本號,並完全繞過樣式表的緩存。這增加了處理,但是減少了代碼維護。 – 2009-10-23 16:34:11

+0

與Jim同意,我個人使用文件的時間戳,它使用起來更容易。 – 2009-10-23 16:58:13

+0

我不明白,還是你建議使用時間戳來防止緩存,這是爲了減少服務器負載而引入的,以減少_programming_? – Kheldar 2011-11-07 15:40:33

4

的目的是什麼?版本= 1是參數化的css文件,所以當他們發佈了新的style.css文件,他們起來的版本,並強制客戶端下載,而不是從緩存拉動新的文件,版。

9

添加使得HTTP請求看起來像一個GET查詢與參數,乖巧的瀏覽器(和代理人)將拒絕緩存參數化查詢。當然,運行良好的瀏覽器(和代理)也應該注意'Cache-control:no-cache','Expires','Last-Modified'和'ETag'響應頭(所有這些都被添加到HTTP指定正確的緩存行爲)。

的「?版本= 1」的方法是一個昂貴的辦法強迫行爲時,該網站開發人員不知道如何(或者是懶得)實施正確的響應頭。特別是,這意味着每個頁面請求都會強制請求該CSS文件,即使在實踐中,CSS文件很少會改變,即使如此。

我的推薦? 不要這樣做。

+0

「這意味着每個頁面請求將強制請求該CSS文件」 - 不,它不。爲什麼呢?僅僅因爲資源的查詢部分被使用了? – bzlm 2011-07-05 14:42:36

+2

不相信我?用各種瀏覽器進行測試。 – 2011-07-18 14:43:23

+0

僅僅因爲瀏覽器不會緩存參數化查詢,或者我們實際上可以在CSS中插入一個版本號,並且可以通過例如數字來調用它。 ver = 1,ver = 2,ver = 3,或者調用舊版本而新版本存在? – bjan 2013-09-23 06:19:09

1

IMO更好的方式來做到這一點將是包括一個基於文件內容或最後修改日期生成的散列文件大小或校驗和。這樣你就不必更新一些版本號,只需要讓文件的屬性改變即可。

2

如果您正在開發HTML和CSS或任何其他技術的Web應用程序,並且正在使用一些外部CSS或JS文件,你可能會注意到一兩件事,在某些情況下,如果您對現有的.css任何改變或.js文件,那麼瀏覽器不會立即反映這些變化。

在這種情況下會發生什麼是瀏覽器不下載的的CSS的最新版本的全新副本和.js文件,而是使用存儲在本地緩存中的文件。因此,您最近所做的更改對您而言不可見。

<link rel="stylesheet" href="style.css?v=1.1"> 

上述情況下,當你打開網頁瀏覽器將把「style.css文件」作爲不同的文件用「?V = 1.1」一起。因此,如果樣式表或腳本文件被強制下載新的副本。