2008-12-21 116 views
5

每當我們對CSS進行更改時,通常需要24小時才能反映我網站上的更改。我已經嘗試清除服務器緩存和瀏覽器緩存,但它也無濟於事。是否有任何其他方法可以在更新後立即反映CSS更改?未在網站上反映的CSS更改

它發生在所有瀏覽器中......當我在瀏覽器中檢查它時,我可以通過兩條路徑訪問我的css文件,例如:我將我的css保存在名爲「Cssfolder」的文件夾中,我的css名稱是135。 CSS 因此,當我訪問該文件夾的路徑,ç ssfolder/135.css & ç ssfolder/135.css,路徑的一個顯示我最新的CSS,而另一個顯示我老css.Notice的「c」是在一條路徑上捕獲,而在另一條路徑上小。

謝謝。

+0

您使用代理服務器還是ISP緩存頁面? – some 2008-12-21 08:26:54

+0

即使您在查看「舊」CSS時點擊Shift-F5,情況是否如此? – 2008-12-21 08:36:54

+0

對於FF它是CTRL-F5 – some 2008-12-21 08:40:11

回答

7

我發現這是我的很多項目中很常見的問題。如果它只是你工作,你可以在開發過程中使用CSS Cachebuster一個應用程序,我建議兩件事情......

  1. 繼Cachebuster後面的想法,我發現通常將CSS文件的時間戳添加爲CSS鏈接的查詢字符串,這有助於告訴瀏覽器該文件是不同的......類似.. 。whatever.css?12212009035543

1

你真的需要看看這是服務器端還是客戶端。如果服務器仍然服務舊的CSS,那麼顯然你在客戶端沒有機會。

我偶爾會看到不得不在瀏覽器中顯示CSS的時間,然後下一次我去過真正的頁面時,它使用了新的CSS。通常只需刷新就可以了。

你有任何網絡緩存像Akamai參與任何地方?

如果您嘗試從未見過舊版本的計算機轉到CSS頁面,它顯示的是哪個版本?

編輯:更改了答案以反映有問題的編輯。

0

也許互聯網服務提供商的緩存,如在這case

-1

當我發展,我需要確保我看到的變化,因爲我的工作,我堅持的CSS在網頁即

<style type="text/css"> 
/* your css */ 
</style> 

或者你可以不斷地改變CSS文件本身的名稱,在生產環境中不是很有用,但在開發時也許可以。

我知道它不能解決問題,但對於開發它沒關係。

3

您可能希望使用監視工具(如Firefox的Live Http Headers)來查看與服務器之間的請求和響應。這通常爲我解決了很多問題。看看「Expire」標題和條件請求(如:「If-modified-since」)。這就是說,看看服務器和客戶端的本地時間和時區 - 它們可能會有很大的不同,有條件的GET請求「似乎」會被正確處理,因爲未來或其他時間戳會造成損壞。

您可以強制直接從服務器加載當前的css,並將隨機唯一值附加到url,如http://example.com/Cssfolder/135.css?983274928374http://example.com/cssfolder/134.css?08973249827。除非您使用相同的隨機值兩次,否則無法獲得緩存。

通過這種方式,您可以瞭解您的問題的解決方案的進一步位置:在服務器,ISP /代理或瀏覽器。

1

我一直在處理這個問題,最後寫了一個httpmodule來處理它。

這很簡單,它只是發現頭標籤中的所有腳本/ css鏈接(它們現在需要有runat = server)並將程序集版本號附加到鏈接,與Tim K描述的方式相同。通過這種方式,當我的應用程序在生產環境中更新時,我肯定我的客戶總是獲取最新的css /腳本,而不必再次處理這個問題。

2

我已經寫了一篇博客文章,我們如何克服在這裏這個問題:

Avoiding JavaScript and CSS Stylesheet Caching Problems in ASP.NET

基本上,在開發過程中,你可以在文件名後的隨機數添加到查詢字符串你的CSS文件。當您執行發佈版本時,代碼切換爲使用您的程序集的修訂版本號。這意味着在您的生產環境中,您的客戶可以緩存樣式表,但是當您發佈新版本的網站時,他們將被迫重新加載文件。

0

我很困惑這個問題,然後有人說Ctrl + F5。爲我工作:)