我们有一个案例,客户似乎永远缓存applet的版本。我们正在<param name="cache_version">
标记中正确使用<object>
标记,或者我们认为。我们从7.1.0.40
的版本字符串转到7.1.0.42
,这导致只有大约一半的客户下载。
客户端运行的JRE版本似乎并不重要。我们已经看到人们在1.4,1.5和1.6上遇到这个问题。
有没有人有显式缓存版本的经验?是否更可靠地工作(忽略速度)而不是依赖于cache_archive
的“Last-Modified”和/或“Content-Length”值(根据Sun's Site)?
仅供参考,对象块如下所示:
<object>
<param name="ARCHIVE" value="foo.jar">
<param name="CODE" value="com.foo.class">
<param name="CODEBASE" value=".">
<param name="cache_archive" value="foo.jar">
<param name="cache_version" value="7.1.0.40">
<param name="NAME" value="FooApplet">
<param name="type" value="application/x-java-applet;jpi-version=1.4.2_13">
<param name="scriptable" value="true">
<param name="progressbar" value="true"/>
<param name="boxmessage" value="Loading Web Worksheet Applet..."/>
</object>
答案 0 :(得分:9)
不幸的是,不同版本的Java Plug-In具有不同的缓存行为。设置Cache-Control和Last-Modified HTTP标头是理想的解决方案,但它仅适用于JRE的the most recent versions。
保证工作的唯一解决方案是在版本更改时重命名应用程序jar(我们在尝试其他技巧时会看到奇怪的缓存行为,例如根据文件日期添加查询字符串)。如果您有一个正确的自动部署系统,这并不难做到。
答案 1 :(得分:2)
您可以使用Java Control Panel
从Java缓存中删除applet
例如,在Win XP上
Start -> Control Panel -> Java -> Temporary Internet Files[View]
答案 2 :(得分:0)
根据this link ,同一个jar文件不应该列在int“archive”和“cache_archive”参数中。在这种情况下,使用本机浏览器缓存来缓存JAR文件。