Java Applet没有缓存

我遇到了一个我已部署的Java applet的问题,它拒绝缓存在jvm的“粘性”缓存(或浏览器)中。 出于某种原因,每次用户加载该applet所在的页面时,jvm都会从服务器重新下载jar文件,这会导致长时间的延迟。

包含applet的网页正在通过互联网访问,因此根据Sun的Java applet文档,我使用的是标签,而不是标签。

任何帮助调试或识别问题将非常感激。

下面是我正在使用的完整applet标记:

      Your browser is unable to process the Java <APPLET> tag needed to display this applet 
One solution would be to download a better web browser like Mozilla's Firefox

我有同样的问题,发现需要应用服务器端的技巧。 如果他们的mime类型不正确,似乎没有缓存jar。 请使用application / java-archive mime类型检查服务器回复。

我发现的另一个问题与特定的jar子有关。 我的存档参数列出了许多jar,但只有少数是缓存的。 我发现所有jar子都缓存到一个特定的jar子里,所有剩下的jar子都没有缓存。 在加载applet时,我在其java控制台中按下了“5”,并在jar中找不到最后一个缓存的jar:cache:signed条目后发现此消息。 我仍然不知道这个文件有什么问题,但我在存档参数列表的末尾移动了那个jar。 这“解决”了这个问题。

我个人通过使用http://java.sun.com/javase/6/docs/technotes/guides/plugin/developer_guide/applet_caching.html上记录的 cache_archive和cache_version参数解决了缓存问题。

我的cache_version基于实际的文件修改日期,例如

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

并与MSIE合作,它看起来像:

 if (msie) { cms write  ...    } else { cms write  } 

这篇官方文章介绍了如何更改APPLET标记以增加缓存:

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

对我来说,我不得不从Archive标签中删除Jar文件,并将它放在cache_archive参数中,并指定版本,使其不会在上次修改日期时回退到服务器

在我的Firefox中修复了它