2010-04-22 120 views
8

我遇到了一個我部署的拒絕緩存在jvm的「粘性」緩存(或瀏覽器)中的Java applet問題。由於某種原因,每當用戶加載此小程序所在的頁面時,jvm會從服務器重新下載jar文件,這會導致很長的延遲。Java Applet無法緩存

包含applet的網頁被經由因特網訪問,因此根據Sun's Java applet documentation我使用<applet>標籤而不是<object><embed>標籤。

任何幫助調試或識別問題將不勝感激。

下面是我使用的是全小程序標記:

<applet alt="Scanning Applet failed to load" archive="scanning.jar" 
     code="scanning.scanlet.class" codebase="/java/" codetype="application/java" 
     height="30" mayscript="True" name="scanlet" width="200"> 
    <param name="domain" value="192.168.12.23" /> 
    <param name="publishName" value="scan_attachment" /> 
    <param name="publishURL" value="http://192.168.12.23/draft/update/52" /> 
    <param name="curURL" value="http://192.168.12.23/draft/edit/52" /> 

Your browser is unable to process the Java &lt;APPLET&gt; tag needed to display this applet 
<br /> 
One solution would be to download a better web browser like 
<a href="http://www.mozilla.com/firefox">Mozilla's Firefox</a> 

</applet> 
+0

我已經啓用日誌和跟蹤通過Java控制面板 - >高級 - >調試,我得到了以下消息的許多迭代: 網絡:未找到緩存項[url:http ://192.168.12.23/java/scanning.jar,版本:1.0] – 2010-04-22 21:32:16

+0

一般StackOverflow問題:是否沒有辦法格式化「評論」像最初的問題一樣好? – 2010-04-22 21:33:24

回答

1

這位官員介紹瞭如何可以改變你的APPLET標記,以增加高速緩存:

http://java.sun.com/products/plugin/1.3/docs/appletcaching.html

+0

喬恩,thx爲快速反應,不幸的是我已經上下了官方文件。據說,因爲我只是使用了archive屬性,所以即使沒有新的cache_ *屬性,我也應該得到某種回退瀏覽器級別的緩存,對吧? – 2010-04-22 21:08:32

+0

無論如何,在將cache_ *屬性添加到我的applet標記中後,該applet仍然拒絕被jvm緩存: ...相同的參數等。 2010-04-22 21:35:35

+0

那麼,這個「後備瀏覽器級別緩存」仍然由JVM完成,通常是問題 – ArtemGr 2010-04-24 06:32:55

2

個人而言,我解決了通過使用cache_archive和cache_version參數來緩存問題,文檔編號爲http://java.sun.com/javase/6/docs/technotes/guides/plugin/developer_guide/applet_caching.html

我的ca che_version基於實際的文件修改日期,例如,

val archive = libs.map("/" + _.getPath).mkString (", ") 
val version = libs.map(_.getUpdated/1000/20 - 59281420).mkString (", ") 

,並與MSIE的工作,它看起來如下:

if (msie) { 
    cms write <OBJECT 
    classid="clsid:CAFEEFAC-0016-0000-0000-ABCDEFFEDCBA" 
    codebase="http://java.sun.com/update/1.6.0/jinstall-6-windows-i586.cab" 
    width="100%" height="100%"> 
    ... 
    <PARAM name="cache_archive" value={archive}/> 
    <PARAM name="cache_version" value={version}/> 
    </OBJECT> 
} else { 
    cms write <applet ... 
    cache_archive={archive} cache_version={version}></applet> 
} 
+0

ArtemGr,thx的詳細響應。我們所有的用戶都通過Firefox訪問該站點,因此無法使用。我的小應用程序標籤包含cache_ *屬性(_archive,_option,&_version),但是每當我瀏覽回有問題的頁面時,小程序仍然在重新下載 這裏是我修改後的Applet標籤: < applet cache_archive =「scanning.jar」cache_option =「Plugin」cache_version =「1.0」code =「scanning.scanlet.class」codebase =「/ java /」codetype =「application/java」height =「30」mayscript =「True 「name =」scanlet 「width =」200「> ...相同的參數等。 – 2010-04-22 21:28:53

+0

這是否僅僅發生在您身上或者是否發生在網站的所有(某些)用戶身上?如果前者,那麼可能是因爲某些原因,計算機上的Java插件無法緩存該文件?在Windows上,Java插件可以在瀏覽器緩存中進行緩存,在這種情況下,瀏覽器緩存限制可能適用(您可以通過控制面板查看緩存的內容)。在UNIX上使用〜/ .java/deployment /文件夾來進行緩存,〜/ .java /應該是可寫的等等。 – ArtemGr 2010-04-23 15:00:30

+0

每個使用該站點的人都會遇到這種情況:[。在Windows計算機上,我查看了Java控制面板,只能找到「緩存」設置在Temporary Internet Files-> Settings下。這些設置雖然都很好看。我也在Temporary Internet Files-> View下查看,以驗證問題中的.jar文件不存在於緩存中:[ – 2010-04-23 20:45:12

4

我有同樣的問題,發現需要被應用服務器端的一招。看起來,如果他們的mime類型不正確,那麼jar就不會被緩存。請使用application/java-archive MIME類型檢查您的服務器回覆。

我發現的另一個問題是與特定的jar有關。我的存檔參數列出了很多jar,但只有少數被緩存。我發現所有罐子都達到了一個特定的罐子,其餘的罐子都沒有被緩存。 加載小程序時,我在其java控制檯中按下「5」,並在剛剛上一次緩存的jar:cache:signed項從jar中丟失後發現此消息。我仍然不知道這個文件有什麼問題,但是我在歸檔參數列表的末尾移動了那個jar文件。這個「固定」的問題。

1

對我來說,我不得不從歸檔變量刪除Jar文件,只是有它在cache_archive參數,並指定版本,這樣,它不捎帶到服務器進行最後修改日期

固定它在我的火狐