可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I'm having a problem with a Java applet I've deployed that is refusing to be cached in the jvm's "sticky" cache (or by the browser). For some reason every time a user loads the page this applet is on, the jvm re-downloads the jar file from the server which causes a long delay.
The webpage containing the applet is being accessed via the internet, so according to Sun's Java applet documentation I'm using an <applet>
tag rather than an <object>
or <embed>
tag.
Any help debugging or identifying the problem would be much appreciated.
Below is the full applet tag I'm using:
<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 <APPLET> 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>
回答1:
I had the very same problem and found a trick that need to be applied server side. It seems that jars aren't cached if their mime type is incorrect. Please check your server reply using the application/java-archive mime type.
Another problem I found is related to a specific jar. My archive parameter was listing many jars, but only a few were cached. I found that all jars upto a specific one where cached, all remaining jars weren't cached at all. While loading applet, I pressed "5" in its java console and found this message just after the last cached jar: cache: signed entry missing from jar . I still don't know what is wrong with this file, but I moved that jar at the end of the archive parameter list. This "fixed" the problem.
回答2:
Personally I solved the caching issues by using cache_archive and cache_version parameters docummented at http://java.sun.com/javase/6/docs/technotes/guides/plugin/developer_guide/applet_caching.html
My cache_version is based on the actual file modification date, e.g.
val archive = libs.map("/" + _.getPath).mkString (", ") val version = libs.map(_.getUpdated / 1000 / 20 - 59281420).mkString (", ")
and to work with MSIE it looks as:
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> }
回答3:
This official article describes how you can change your APPLET tag to increase caching:
http://java.sun.com/products/plugin/1.3/docs/appletcaching.html
回答4:
For me I had to remove the Jar files from the Archive tag and just have it in the cache_archive parameter, and specify the versions that way it doesn't piggy back to the server for last modified date
Fixed it in firefox for me