2011-07-12 38 views
3

我正在嘗試更新applet的緩存。該applet正確緩存,但之後,無論緩存有多陳舊,它都不會更新。如果我手動刪除緩存,則會在下次加載頁面時創建一個新緩存,並且我嘗試緩存的所有對.jar文件的更改都會生效。但是,必須這樣做,這是不可接受的。如何更新applet的緩存?

我已經在我的索引文件使用cache_archive結合cache_version像這樣嘗試:

if (navigator.appVersion.indexOf("Win")!=-1){ 
    var attributes = { id:'manager', code:'HardwareManagerApplet_FileWriter',   width:1, height:1} ; 
    var parameters = {jnlp_href: '/java/HardwareManagerApplet.jnlp', codebase: '/java/hardwaremanager.jar', cache_archive:'hardwaremanager.jar', cache_version:'0.0.0.7'}; 
    check = deployJava.runApplet(attributes, parameters, '1.6'); 
    hardware_enabled = true 
    console.log("Applet started") 
} 

這有沒有影響。我試着將cache_archive和cache_version移到屬性和各種排列之間,無濟於事。我曾嘗試啓用cache_option設置爲第一個瀏覽器,然後再次嘗試將其設置爲插件。沒有骰子。我研究過ETags,我不相信這將是最好的解決方案。我也研究過last-Modified,但是A)我不確定如何將它實現到http中,這樣緩存將會更新,並且B)如果我必須走這條路線,它將打開一個全新的罐頭。

有沒有其他合理的選擇?更好的是,我只是不正確地實現cache_archive等人?

而實際上,即使我可以讓它緩存每次加載頁面,我都會很滿意。

感謝您的幫助!

編輯:有關的代碼塊是我做的唯一實現cache_archive等。我是否需要在其他地方放幾行?就Oracle的文檔而言,我並沒有覺得這很清楚。

回答

2

你失蹤了緩存選項,有如下幾點參數

的cache_option屬性可以採用三個值中的一個:

  • 沒有 - 禁止小程序的安裝。始終從網絡服務器下載文件。
  • 瀏覽器 - 從瀏覽器緩存中運行小程序(默認)。
  • 插件 - 從新的Java Plug-in緩存中運行小應用程序。

通過默認瀏覽器,您將不得不清除瀏覽器緩存以使更新的值生效。使用插件充分利用要實現的版本控制。

+0

我想知道這件事......我試着將cache_option:插件放在參數var的cache_archive之前,但我只是在黑暗中拍攝而已。如果我將cache_option:插件放回該行,理論上它應該工作嗎?這不是最後一次,但我可能會做錯或其他錯誤。 – Alex

+0

它絕對沒有解決所有問題,雖然它可能會成爲一個問題。謝謝。 – Alex

+0

它仍然沒有正確緩存? – Keibosh

0

applet的緩存是虛擬機(JVM)和瀏覽器的工作。爲了性能目的,瀏覽器和JVM都針對緩存applet進行了優化。

我的解決方案都是一個:

  1. 清除虛擬機的每一個班之後緩存構建:打開Java控制檯,然後輸入x器(classloader-緩存清理)。然後刷新你的瀏覽器。 或
  2. 關閉瀏覽器,並啓動它都重新

我喜歡的解決方案1。