2012-04-11 69 views
2

在Java applet中進行緩存有哪些方法可用?在Java Applet中進行緩存

我發現組成applet的.jar會被大多數瀏覽器緩存。

  • 對於applet使用的任何依賴.jars,情況會是這樣嗎?
  • 如果小程序在運行時從遠程URL加載資源,是否 正確以便瀏覽器不會緩存?如果 沒有被瀏覽器緩存,那麼通過寫入本地存儲器能夠實現緩存 嗎?

回答

3

對於applet使用的任何依賴.jar,情況會是這樣嗎?

是的,假設依賴的JAR是可緩存的。

如果小程序在運行時從遠程URL加載資源,那麼假設瀏覽器不會緩存它是否正確?

可能是的。 JVM可能直接連接到遠程服務器,並且瀏覽器不會看到HTTP請求。另外,JVM可能不會意識到瀏覽器的緩存組織或位置。但是,這完全取決於平臺。

JVM也可能實現自己的HTTP緩存。 AFAIK,目前這一代Oracle JVM並沒有,但未來的JVM並不是不可想象的。

如果它沒有被瀏覽器緩存,是否可以通過寫入本地存儲來實現緩存?

只有當小程序被簽名並且用戶已接受簽名時。小程序通常無法讀取或寫入本地存儲。

+0

感謝您的回答。只是爲了澄清運行時緩存行爲:如果我的Java applet自己發出一個HTTP請求,比如說加載一個圖像,它會被視爲瀏覽器加載的資源,或者是瀏覽器繞過了,JVM發出請求'直'? – 2012-04-11 10:59:57

+0

如果JVM沙盒允許applet執行該操作,那麼我認爲瀏覽器不會意識到請求已發出。我也認爲JVM將無法直接使用瀏覽器的緩存...因爲它不知道它是如何組織的,甚至不知道它在哪裏。 – 2012-04-11 11:02:56

+0

感謝您的澄清。您可能希望將第二點修改爲「是」,然後我可以將您的答案標記爲正確。 – 2012-04-11 14:04:36

2

爲了更好地控制資源的緩存,部署使用Java Web Start它提供了小程序:

..automatic更新(包括懶惰下載和編程控制更新)..

注這是一個JWS應用程序。不需要被信任來調用JNLP API的編程更新部分。

0

根據How to disable http caching in appletURLConnection JavaDoc以編程方式請求資源時將啓用緩存。

+0

請注意,'setUseCaches'提到**允許使用**緩存。我認爲這是指外部HTTP代理中的緩存。但是請隨時嘗試一下,看看它是否利用了瀏覽器的緩存和/或JVM特定的緩存。 – 2012-04-13 09:27:02

+0

是的,我認爲一些經驗修補是必需的:) – 2012-04-13 09:43:43