我在小程序上有这段代码。该小程序工作正常,但我得到了很多不必要的重复下载。特别是,我注意到每个“getResource”都会触发 .JAR 文件的下载。

static {
    ac = new ImageIcon(MyClass.class.getResource("images/ac.png")).getImage();
    dc = new ImageIcon(MyClass.class.getResource("images/dc.png")).getImage();
    //...other images
}

如何避免这种情况?

有帮助吗?

解决方案

您是否将applet包含在HTML页面中?如果是这样,请尝试启用JAR缓存,如下所述: http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/applet_caching.html

如果由于某种原因没有帮助:)可能会在您的applet JAR上在Web服务器上公开您的资源/图像并使用单独的HTTP请求到达它们(是的,它的丑陋和是的,它不会减少所需的下载数量,但它至少减少了需要传输的数据量。)

其他提示

只需删除URLConnection.setDefaultUseCaches(false)的所有实例即可解决问题。

请参阅更多详情。

http:// java-junction .blogspot.com / 2009/11 / applet与罐缓存-未working.html

只有解决方法:

您可以将图像放在jar中的zip文件中,使用ZipInputStream获取它并从那里提取图像。

您使用哪种 Java 虚拟机?您使用哪个服务器?

  • Linux 上的浏览​​器插件存在错误。
  • 如果服务器不发送修改日期,那么 Java 就无法缓存 jar 文件。

如果你的applet总是下载jar,即使jar被缓存,请确保你没有通过API禁用 URLConnection 的缓存: URLConnection.setUseCaches 和<代码> URLConnection.SetDefaultUseCaches

ImageIcon 获取资源的基本机制是 URLConnection 。调用 URLConnection.setDefaultUseCaches(false),设置“所有 URLConnections ”的静态状态的一部分。这导致JRE忽略缓存并在每次访问时重新下载整个jar。

只需删除 setDefaultUseCaches 的所有实例即可解决问题。

这是来自的重新发布: http: //java-junction.blogspot.com/2009/11/applet-jar-caching-not-working.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top