2011-07-04 181 views
26

我有一個Web服務,像大多數人一樣,使用js和css文件。我使用將版本號附加到js和css文件的舊技巧: ?v = 123,每次我們更新生產服務時都會更改。現在Chrome緩存像瘋狂的瀏覽器

,能正常工作在所有瀏覽器,除了鉻。 Chrome似乎更喜歡它的緩存版本而不是新版本,因此似乎忽略了附加變量。在某些情況下,強制它刷新緩存(cmd + r/ctrl + f5)是不夠的,所以我不得不進入選項並清除緩存以加載新內容。

有沒有人遇到過Chrome的這個問題?如果是這樣,解決這個問題的方法是什麼?

+2

愛的標題;) – async

回答

12

Chrome瀏覽器肯定會將具有不同查詢字符串的請求視爲不同的請求; style.css?v=123的緩存結果不應該用於style.css?v=124。如果您看到不同的行爲,請在http://new.crbug.com/處提交錯誤並在此處發佈錯誤ID。

也就是說,我首先檢查一下是否緩存的時間比預期的要長。如果沒有下載新版本的頁面,那麼它仍然會請求?v=123,因爲HTML不會改變。如果您使用該頁面發送長期存在的緩存標頭,則Chrome可能會比預期的更積極地緩存它。如果這是您所看到的行爲,請致電http://crbug.com/8742獲取更新。

+0

確實。檢查加載的html頁面的源代碼(查看源代碼),查看使用Chrome開發人員工具欄請求了哪些資源。我懷疑這是一個鉻錯誤,雖然積極的緩存可能是一個討厭的'功能'。 – ivy

+0

夢幻般的答案麥克!它不會讓我感到驚訝,爲頁面本身發回的頭可能會請求更長的緩存,然後我們會想要。我不記得那樣看,所以這是我要做的第一件事。再次感謝! –

+0

我的問題是我們*沒有設置expires/cache-control標頭。在嘗試更激烈的事情之前,絕對值得檢查這些設置。 – FuriousFolder

1

我也有過這方面的經驗。

我運行的顯示內容,如會員制網站「你必須登錄爲金卡會員才能看到這個內容」,如果他們沒有登錄或試圖查看的內容不被他們的會員級別允許的。但即使用戶已登錄,由於Google Chrome的積極緩存,用戶仍然會看到「您需要登錄」。然而,在Firefox中,當我測試登錄和退出全部5個級別的成員身份時,它都能正常工作 - 每個級別都顯示正確的內容。

雖然Chrome瀏覽器的緩存問題可以通過每次清除緩存進出用戶登錄來解決,這將是非常惱人採取這種做法。

2

我也有過同樣的經歷

您可以通過用戶按Ctrl + Shift + R在這兩個瀏覽器的Mozilla +緩存免費瀏覽。