Java Applet永久缓存,不下载新版本吗?
时间:2020-03-05 18:54:31 来源:igfitidea点击:
在某些情况下,客户端似乎永远在缓存小程序的版本。我们在我们的<object>标签中正确使用了<param name =" cache_version">标签,或者我们认为。我们从版本字符串" 7.1.0.40"转到" 7.1.0.42",这仅触发了大约一半客户的下载。
客户端运行哪个版本的JRE似乎无关紧要。我们已经看到人们在1.4、1.5和1.6上存在此问题。
有人对显式缓存版本有经验吗?是否依靠cache_archive
的" Last-Modified"和/或者" Content-Length"值(根据Sun的站点)来工作更可靠(忽略速度)?
仅供参考,对象块如下所示:
<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>
解决方案
回答
不幸的是,不同版本的Java插件具有不同的缓存行为。设置Cache-Control和Last-Modified HTTP标头是理想的解决方案,但是它仅在最新版本的JRE下有效。
保证有效的唯一解决方案是在应用程序jar的版本更改时对其进行重命名(在尝试其他技巧(例如基于文件日期添加查询字符串)时,我们已经看到了奇怪的缓存行为)。如果我们有一个适当的自动化部署系统,这并不是很难做到的。