【问题标题】:How do I update the cache for an applet?如何更新小程序的缓存?
【发布时间】:2011-10-03 16:54:10
【问题描述】:

我正在尝试更新小程序的缓存。小程序正确缓存,但之后,无论缓存多么陈旧,它都不会更新。如果我手动删除缓存,将在下一页加载时创建一个新缓存,并且对我尝试缓存的 .jar 文件的所有更改都会生效。但是,必须这样做是不可接受的。

我曾尝试在我的索引文件中将 cache_archive 与 cache_version 结合使用,如下所示:

if (navigator.appVersion.indexOf("Win")!=-1){
    var attributes = { id:'manager', code:'HardwareManagerApplet_FileWriter',          width:1, height:1} ;
    var parameters = {jnlp_href: '/java/HardwareManagerApplet.jnlp', codebase: '/java/hardwaremanager.jar', cache_archive:'hardwaremanager.jar',  cache_version:'0.0.0.7'};
    check = deployJava.runApplet(attributes, parameters, '1.6');
    hardware_enabled = true
    console.log("Applet started")
}

这没有任何效果。我曾尝试将 cache_archive 和 cache_version 移动到属性中,并且在它们之间进行各种排列无济于事。我尝试将 cache_option 设置为第一个浏览器,然后再次尝试将其设置为插件。没有骰子。我研究了 ETags,但我不相信这会是最好的解决方案。我也研究了 last-Modified,但是 A)我不确定如何在 http 中实现它,所以缓存会更新,B)如果我必须走那条路线,它将打开一个全新的罐头。

还有其他合理的选择吗?更好的是,我只是错误地实现了 cache_archive 等吗?

实际上,即使我可以在每次页面加载时缓存它,我也会感到满意。

感谢大家的帮助!

编辑:关于的代码块是我对 cache_archive 等所做的唯一实现。我需要在其他地方添加几行吗?就 Oracle 的文档而言,我觉得这不是很清楚。

【问题讨论】:

    标签: java html caching applet next-generation-plugin


    【解决方案1】:

    您缺少缓存选项的参数如下

    cache_option 属性可以采用以下三个值之一:

    • - 禁用小程序安装。始终从网络服务器下载文件。
    • 浏览器 - 从浏览器缓存运行小程序(默认)。
    • 插件 - 从新的 Java 插件缓存运行小程序。

    默认为浏览器,您必须清除浏览器缓存才能使更新的值生效。使用插件来充分利用您想要实现的版本控制。

    【讨论】:

    • 我想知道...我尝试将 cache_option:plugin 放在参数 var 中的 cache_archive 之前,但我只是在黑暗中拍摄。如果我将 cache_option:plugin 放回该行,理论上它应该工作吗?上次没有,但我可能做错了那个或其他错误。
    • 它肯定没有解决所有问题,尽管它可能会成为一个问题。谢谢。
    • 它仍然没有被正确缓存?
    • 您是否尝试过使用旧的对象 html 标签来加载小程序?它还可能使调试变得更容易。
    【解决方案2】:

    小程序的缓存是虚拟机 (JVM) 和浏览器的工作。浏览器和 JVM 都针对缓存小程序进行了优化,以提高性能。

    我的解决方案是两者之一:

    1. 在每个类构建后清除虚拟机的缓存:打开 Java 控制台并输入x(ClassLoader-Cache clear)。然后刷新浏览器。 或
    2. 关闭浏览器并重新启动

    我更喜欢解决方案 1。

    【讨论】:

      猜你喜欢
      • 2011-12-08
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多