2011-05-04 135 views
4

我之前提出過這個問題,但沒有回答,因此我添加了更多信息。 我已經構建了一個在線服務,它對js使用spring 3 mvc和spring安全性進行身份驗證/授權有點沉重。 HTTPS是任何交互的要求,因此適用於所有請求。服務器設置由一個Tomcat 7應用程序服務器(將來可能會添加更多內容)組成,它位於Apache2服務器後面,該服務器充當mod_proxy,mod_cache和mod_deflate的反向代理。緩存標頭設置的所有可高速緩存的資源(JS,CSS,圖像):Google Chrome瀏覽器緩存問題

Cache-Control:max-age=604800, must-revalidate, public 

上述報頭具有在Firefox和IE瀏覽器所希望的結果(至少版本3+和8+分別,我已經過測試),即兩個瀏覽器都會相應地緩存.js和.css文件,除非用戶刷新頁面,以便瀏覽器將追加到請求標頭Cache-Control:max-age=0並獲得304回覆,或強制刷新Cache-Control:no-cache,以便重新讀取資源。 另一方面,雖然Google Chrome瀏覽器的行爲有所不同,但它會通過將jsessionid附加到用於在高速緩存中存儲文件的密鑰來緩存將它們綁定到分配給用戶的特定會話的文件。這會導致每次用戶登錄/註銷或關閉瀏覽器時,都會從服務器重新獲取文件(Spring安全性有一個臨時sessionid,另一個會記住我)。用於登錄屏幕和主站點的主要css甚至在用戶訪問登錄屏幕時以及在登錄後將其重定向到主站點時被取兩次(因爲現在chrome將文件放入緩存中sessionid綁定到它)。

+0

我想我總是可以使用谷歌庫至少加載基本庫和部分繞過這個問題,但它仍然不是理想的。 – nvrs 2011-05-04 11:54:33

+0

重新提出同樣的問題在這裏是不可接受的行爲。如果你想引起人們對你的問題的關注,那麼兩天後你將被允許[放置賞金](http://stackoverflow.com/faq#bounty)。您還可以[編輯您的問題](http://stackoverflow.com/posts/5880432/edit)添加其他信息,這可能會使您的問題更易於理解和回答。 – Will 2011-05-05 13:03:33

回答

5

我碰到這個問題再次來到最近,我終於想通了,Chrome的拒絕緩存,即使頭是完全正常的靜態資源的原因。 它與會話無關,如果您從HTTPS URL請求資源並且服務器使用未在您的可信證書存儲區中導入的自簽名證書,則它不會緩存任何內容。我有

+0

好信息:無效的證書! – covener 2013-05-28 16:13:13

0

是否標記no-transform到底有什麼幫助?

Cache-Control:max-age=604800, must-revalidate, public, no-transform 
+0

Thanx答覆,但沒有它不。 – nvrs 2011-05-04 08:55:10