【问题标题】:Java applet cached forever, not downloading new version?Java小程序永久缓存,不下载新版本?
【发布时间】:2010-09-09 04:11:10
【问题描述】:

我们有一个案例,客户端似乎永远在缓存小程序的版本。我们在<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'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>

【问题讨论】:

    标签: java caching applet


    【解决方案1】:

    您可以使用 Java Control Panel 从 Java 缓存中删除小程序。
    例如,在 Win XP 上

    Start -> Control Panel -> Java -> Temporary Internet Files[View]
    

    【讨论】:

      【解决方案2】:

      根据this link , 相同的 jar 文件不应在“archive”和“cache_archive”参数中列出。在这种情况下,JAR 文件会使用本机浏览器缓存进行缓存。

      【讨论】:

        【解决方案3】:

        不幸的是,不同版本的 Java 插件具有不同的缓存行为。设置 Cache-Control 和 Last-Modified HTTP 标头是理想的解决方案,但它仅适用于 JRE 的 the most recent versions

        保证工作的唯一解决方案是在版本更改时重命名您的应用程序 jar(我们在尝试其他技巧时看到奇怪的缓存行为,例如根据文件日期添加查询字符串)。如果您有一个适当的自动化部署系统,这并不难做到。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-03
          • 1970-01-01
          • 1970-01-01
          • 2018-02-11
          • 2019-01-05
          相关资源
          最近更新 更多