0

我已將我的Web應用程序上傳到我的Production Tomcat Web服務器中。
我試圖測試它,它在FF/IE7/IE8上正常工作,但我在IE6上顯示問題 。IE6不緩存我的圖像

我注意到在狀態欄中IE6似乎在不時地下載圖像。 即使我沒有點擊任何東西,它仍然下載圖像。

我正在使用一個使用圖像的菜單,它在IE6上顯示效果不佳。問題是我的目標用戶 的60%在此瀏覽器上運行。

我開始認爲這是一個瀏覽器緩存問題。在我所有的JSP中,我把meta標籤放在所有head部分。 我這樣做是因爲我的應用程序嚴重依賴於Ajax,我需要我的網絡資源的最新副本。

<head> 
<meta http-equiv="content-type" content="text/html;charset=utf-8" /> 
<meta http-equiv="Pragma" content="no-cache"> 
<meta http-equiv="Cache-Control" content="no-cache"> 
<meta http-equiv="Expires" content="Sat, 01 Dec 2001 00:00:00 GMT"> 
</head> 

這可能是罪魁禍首,是否有任何解決方法呢?我如何強制IE6緩存這些圖像?謝謝。

我不確定這是你在找什麼,但請告訴我是否錯過任何東西。

這是正在下載的圖像的示例。我忘了提及這個應用程序只在我們的本地Intranet網站上運行。

@皮卡,這是你在找什麼?

Response Headers 
Server Apache-Coyote/1.1 
Etag W/"1957-1275442082000" 
Date Mon, 18 Oct 2010 11:37:00 GMT 

Request Headers 
Host atpapps03:9090 
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 (.NET CLR 3.5.30729) 
Accept image/png,image/*;q=0.8,*/*;q=0.5 
Accept-Language en-us,en;q=0.5 
Accept-Encoding gzip,deflate 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive 115 
Connection keep-alive 
Referer http://atpapps03:9090/rts/css/menu.css 
Cookie JSESSIONID=0DD210EE0B2788A7774B10D477734DA9 
If-Modified-Since Wed, 02 Jun 2010 01:28:02 GMT 
If-None-Match W/"1957-1275442082000" 
Cache-Control max-age=0 
+0

請使用Firebug獲取圖像資源的響應標題,尤其是與緩存相關的信息,並在此處發佈 – 2010-10-18 11:08:03

+0

如果您的使用率的60%在IE6上運行,則應該在IE6上完成您的開發(您現在有了得到了臉上的痛苦,你選擇通過在另一個瀏覽器上開發來禁止) – 2010-10-18 11:13:16

+0

@Ian你在說什麼?這是一個緩存問題,而不是HTML顯示問題 – 2010-10-18 11:16:35

回答

2

在我所有的JSP中,我把meta標籤放在所有head部分。我這樣做是因爲我的應用程序嚴重依賴於Ajax,而我需要最新的Web資源副本。

有兩個問題:

  1. 的meta標籤是由web瀏覽器忽略。將這些信息放入響應頭中。

  2. 即使它沒有被忽略,元規則將只適用於JSP的HTML輸出,從而在HTML輸出中的所有鏈接的資源(IMG,JS,CSS等)。他們在自己的回覆標題中各自擁有自己的規則。

最好的辦法是使用Filter它增加了對靜態內容遠的未來日期Expires頭。

private static final long DEFAULT_EXPIRE_TIME = 604800000L; // ..ms = 1 week. 

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException { 
    final long twoWeeksAhead = System.currentTimeMillis() + DEFAULT_EXPIRE_TIME; 
    ((HttpServletResponse) response).setDateHeader("Expires", twoWeeksAhead); 
    chain.doFilter(request, response); 
} 

地圖這個過濾器web.xmlurl-pattern覆蓋感興趣的URL,例如/images/*

+0

+1的具體建議 – 2010-10-18 14:25:51

+0

謝謝。現在到期的YSLOW等級是A,我現在在IE6中看到了相當的加載時間速度。謝謝,謝謝! – 2010-10-20 07:50:48

+0

一方面,您是否瞭解爲什麼只有IE6展示這種行爲?爲什麼IE7/IE8/FF做得很好.. – 2010-10-20 07:51:28

1

參見例如, this question關於如何控制靜態文件類型的緩存設置。

+0

@皮卡我張貼上面的樣本來自Jquery UI Image的圖像文件。這是你在找什麼? – 2010-10-18 11:53:52

+0

@Mark yup。您需要更改緩存的服務器端設置 – 2010-10-18 11:54:38

+0

@Pekka。謝謝。我會檢查這一點,雖然我真的不知道如何做到這一點。我將要求提供建議,因爲我仍然是Spring MVC的初學者 – 2010-10-18 12:29:25

-1

Pekka is correct,它可能是緩存控制。 解決這個問題的方法是從不同的子域加載具有不同緩存標頭集的圖像。如果您使用CDN提供商,他們將爲您設置緩存控制。

IE SUCKS! id在IE 7-8-9上測試它。很少使用IE6 ,如果它的Intranet應用程序,快速修復將是Chrome框架,檢測到它,並且它沒有安裝重定向到下載頁面。