我有一個Applet,它使用URLConnection通過http連接加載圖像。我爲所有連接設置了setUseCaches(true),但仍然沒有看到任何緩存行爲。我的圖片的HTTP標頭具有合理的緩存設置。如果你看一下bug 4528599有這個頗具神祕色彩的語句:URLConnection.setUseCaches()如何在實踐中工作?
的Java插件的最新版本(1.3.1)只檢查 文件後綴名爲的.jar或的.class瀏覽器緩存。我被告知,對於Java Plug-In 1.4瀏覽器緩存將檢查以下文件 類型:.class,.jar,.zip,.jpg,.gif,.wav,.au。
當然,這被標記爲固定爲1.6,但即使在1.6下,我也沒有看到任何緩存。我的圖像是PNG文件,並且在某些情況下實際上並不以.png擴展名結尾。我沒有看到任何緩存。
錯誤修復報告中提到了1.6統一下載引擎,但谷歌似乎對此知之甚少。
這是應該工作還是隻是另一個破碎的太陽「功能」。有什麼方法或解決辦法可以讓我的小程序從瀏覽器緩存中加載PNG圖像?我不想實現我自己的....
更新:緩存似乎與ResponseCache實施綁定。有關如何工作的更多信息,請參閱this technote。最後一行說:
在Java 2標準版 中沒有URLConnection緩存的默認實現。但是,Java Plugin和Java WebStart 提供了一個開箱即用的功能。
所以在我看來,問題真的變成了:Java插件ResponseCache實現如何真正起作用? v1.4/v1.5/v.16之間有什麼區別
任何人有任何想法?
當緩存持久存在時,編寫自己的代碼並不重要。您需要讓多個JVM同時運行,並且您需要將其限制在一個大小內。它真的應該只是工作.... arrgh ... – 2009-08-26 01:08:36
我肯定會推薦不滾動自己的緩存。如果客戶端和服務器正在發送正確的HTTP標頭,但客戶端和服務器之間沒有建立中間HTTP緩存,請安裝代理緩存,如Varnish,Pound或Squid。 – 2009-08-26 04:45:08