我正在尝试更新小程序的缓存。小程序正确缓存,但之后,无论缓存多么陈旧,它都不会更新。如果我手动删除缓存,将在下一页加载时创建一个新缓存,并且我尝试缓存的对 .jar 文件的所有更改都会生效。但是,必须这样做是 Not Acceptable 。
我试过在索引文件中将 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 设置为第一个浏览器,然后再次尝试将其设置为插件。没有骰子。我研究了 ETag,但我不确定这将是最佳解决方案。我也研究了 last-Modified,但是 A) 我不确定如何将它实现到 http 中以便缓存将更新,并且 B) 如果我必须走那条路,它将打开一个全新的 jar 头。
还有其他合理的选择吗?更好的是,我只是错误地实现了 cache_archive 等吗?
实际上,即使我每次加载页面时都能将其缓存,我也会感到满意。
感谢所有的帮助!
编辑:关于的代码块是我对 cache_archive 等所做的唯一实现。我需要在其他地方放几行吗?就 Oracle 的文档而言,我发现它不是很清楚。
最佳答案
您缺少缓存选项的参数,它们如下所示
cache_option 属性可以取三个值之一:
- 否 - 禁用小程序安装。始终从 Web 服务器下载文件。
- 浏览器 - 从浏览器缓存运行小程序(默认)。
- 插件 - 从新的 Java 插件缓存运行小程序。
默认为浏览器,您必须清除浏览器缓存才能使更新的值生效。使用插件充分利用您要实现的版本控制。
关于java - 如何更新小程序的缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6665969/