【问题标题】:Java Applet not cachingJava Applet 不缓存
【发布时间】:2010-04-22 20:02:32
【问题描述】:

我部署的 Java 小程序有问题,它拒绝缓存在 jvm 的“粘性”缓存(或浏览器)中。由于某种原因,每次用户加载此小程序所在的页面时,jvm 都会从服务器重新下载 jar 文件,这会导致很长的延迟。

正在通过互联网访问包含小程序的网页,因此根据Sun's Java applet documentation,我使用<applet> 标签而不是<object><embed> 标签。

任何调试或识别问题的帮助将不胜感激。

以下是我正在使用的完整小程序标签:

<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 &lt;APPLET&gt; 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>

【问题讨论】:

  • 我已经通过 Java 控制面板->高级->调试启用了日志记录和跟踪,并且我收到了以下消息的多次迭代:网络:找不到缓存条目 [url:192.168.12.23/java/scanning.jar ,版本:1.0]
  • 一般 StackOverflow 问题:有没有办法像最初的问题一样格式化“评论”?

标签: java caching applet


【解决方案1】:

我遇到了同样的问题,发现了一个需要在服务器端应用的技巧。如果它们的 mime 类型不正确,似乎不会缓存 jar。请使用 application/java-archive mime 类型检查您的服务器回复。

我发现的另一个问题与特定的 jar 有关。我的存档参数列出了许多罐子,但只有少数被缓存。我发现所有 jar 到一个特定的缓存,所有剩余的 jar 根本没有被缓存。 在加载小程序时,我在其 Java 控制台中按了“5”,并在最后一个缓存的 jar 之后发现了这条消息: cache: signed entry missing from jar 。我仍然不知道这个文件有什么问题,但是我将那个 jar 移到了存档参数列表的末尾。这“解决”了问题。

【讨论】:

    【解决方案2】:

    我个人通过使用 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 <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>
    }
    

    【讨论】:

    • ArtemGr,感谢您的详细回复。我们所有的用户都通过 Firefox 访问该站点,因此不能使用 。我已尝试更改我的小程序标记以包含 cache_* 属性(_archive、_option 和 _version),但每次我浏览回相关页面时,仍会重新下载小程序。这是我修改后的 Applet 标签: ...相同的参数等。
    • 是只发生在您身上还是发生在网站的所有(部分)用户身上?如果是前者,那么可能是您计算机上的Java插件由于某种原因无法缓存文件?在 Windows Java 插件上有一个缓存在浏览器缓存中的选项,在这种情况下,浏览器缓存限制可能适用(您可以通过控制面板查看缓存的内容,顺便说一句);在 UNIX 上 ~/.java/deployment/ 文件夹用于缓存, ~/.java/ 应该是可写的等等。
    • 每个使用该网站的人都会遇到这种情况:[。在 Windows 机器上,我查看了 Java 控制面板,只有在 Internet 临时文件->设置下可以找到的“缓存”设置。不过,这些设置看起来都不错。我还查看了 Temporary Internet Files->View 以验证缓存中不存在相关的 .jar 文件:[
    • 我已经通过 Java 控制面板->高级->调试启用了日志记录和跟踪,并且我收到了以下消息的多次迭代:network: Cache entry not found [url: 192.168.12.23 /java/scanning.jar,版本:1.0]
    • 我一直在研究一个基于 jar 的小程序的工作示例:java.sun.com/docs/books/tutorial/uiswing/components/applet.html。对于这个工作小程序,java 控制台打印出: network: Downloading resource: java.sun.com/docs/books/tutorialJWS/uiswing/components/ex6/… Content-Length: 60,507 Content-Encoding: null ... network: Wrote URL java.sun.com/docs/books/tutorialJWS/uiswing/components/ex6/… to File F:\Documents and Settings\Administrator.STFUNATOR \Application Data\Sun\Java\Deployment\cache\6.0\29\1055419d-13a80961-temp
    【解决方案3】:

    这篇官方文章描述了如何改变你的APPLET标签来增加缓存:

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

    【讨论】:

    • 乔恩,感谢您的快速响应,不幸的是,我一直在查看该官方文件。根据它,因为我只是使用存档属性,所以即使没有新的 cache_* 属性,我也应该得到某种后备浏览器级别的缓存,对吧?
    • 无论如何,将cache_*属性添加到我的applet标签后,applet仍然拒绝被jvm缓存: ...相同的参数,等等。
    • 嗯,这个“后备浏览器级缓存”仍然由 JVM 完成,通常是问题所在。
    【解决方案4】:

    对我来说,我必须从存档标签中删除 Jar 文件,并将其放在 cache_archive 参数中,并指定版本,这样它不会在上次修改日期时捎带回服务器

    帮我在 Firefox 中修复它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-10
      • 1970-01-01
      • 2012-02-23
      相关资源
      最近更新 更多