JNLP 客户端不缓存及jar包的版本号问题
2012-04-12 17:14
211 查看
1.JNLP时实时更新问题
根据我的测试及网上看到的文章了解到,客户端java缓存JNLP是根据URL及response反回的Last-Modified(即最后一次修改时间)来缓存的(具体位置在C:\\Documents and Settings\\Administrator\\Local Settings\\Application Data\\Sun\\Java\\Deployment\\cache\\6.0中的某个文件夹下)。我用的是servlet生成JNLP文件的所以可以在servlet中增加如下代码:
resp.setHeader("Pragma", "no-cache");
resp.setHeader("Cache-Control", "no-cache");
resp.setHeader("Expires", "0");
resp.setContentType("application/x-java-jnlp-file");
((HttpServletResponse)resp).setDateHeader("Last-Modified", System.currentTimeMillis()); //这条语句是JNLP更新的核心
你可以做这样一个测试,将缓存的JNLP文件更改一下,你的applet将无法启动。
2.jar包的版本号问题
jar包可以利用Last-Modified进行实时更新,但有时候没有这个必要,因为每次去下载jar包的话会很慢,特别是jar包比较多的时候,更何况我们还可能会利用JNLP离线运行的特点,所以我的jar包是要缓存的,但如何更新呢?这就是jar包的版本问题了。
(1)首选来说说JNLP中的jar包版本号的实现,见代码
<jar href="my.jar" main="true" version=" 1.0.1" size="13813329" download="lazy" />
(2) html中<Applet>标签中的jar包版本号的实现,在<Applet>标签中加入如下代码:
<PARAM NAME="cache_archive" VALUE="my.jar">
<PARAM NAME="cache_version" VALUE="1.0.1">
这样就可以实现jar包版本的管理了。
顺便说一下JNLP的离线远行只需在<information>标签中加入<offline-allowed/>标签即可.
如有不对之此或有更好的方法请指教,谢谢。
根据我的测试及网上看到的文章了解到,客户端java缓存JNLP是根据URL及response反回的Last-Modified(即最后一次修改时间)来缓存的(具体位置在C:\\Documents and Settings\\Administrator\\Local Settings\\Application Data\\Sun\\Java\\Deployment\\cache\\6.0中的某个文件夹下)。我用的是servlet生成JNLP文件的所以可以在servlet中增加如下代码:
resp.setHeader("Pragma", "no-cache");
resp.setHeader("Cache-Control", "no-cache");
resp.setHeader("Expires", "0");
resp.setContentType("application/x-java-jnlp-file");
((HttpServletResponse)resp).setDateHeader("Last-Modified", System.currentTimeMillis()); //这条语句是JNLP更新的核心
你可以做这样一个测试,将缓存的JNLP文件更改一下,你的applet将无法启动。
2.jar包的版本号问题
jar包可以利用Last-Modified进行实时更新,但有时候没有这个必要,因为每次去下载jar包的话会很慢,特别是jar包比较多的时候,更何况我们还可能会利用JNLP离线运行的特点,所以我的jar包是要缓存的,但如何更新呢?这就是jar包的版本问题了。
(1)首选来说说JNLP中的jar包版本号的实现,见代码
<jar href="my.jar" main="true" version=" 1.0.1" size="13813329" download="lazy" />
(2) html中<Applet>标签中的jar包版本号的实现,在<Applet>标签中加入如下代码:
<PARAM NAME="cache_archive" VALUE="my.jar">
<PARAM NAME="cache_version" VALUE="1.0.1">
这样就可以实现jar包版本的管理了。
顺便说一下JNLP的离线远行只需在<information>标签中加入<offline-allowed/>标签即可.
如有不对之此或有更好的方法请指教,谢谢。
相关文章推荐
- 【cxf客户端】打包jar问题
- 客户端浏览器缓存Js或者css文件问题
- Subversion客户端认证缓存问题
- jar 获取版本号 问题
- weibo客户端访问网页链接解析缓存问题?
- 利用版本号来清空客户端文件缓存
- gulp 添加版本号 解决浏览器缓存问题
- gulpfile.js自动化解决js、css缓存问题(添加版本号)
- 完美解决客户端webview持有的页面缓存,不会立即释放的问题
- 关于FWC客户端版本号问题
- java的redis整合包jar访问外网服务器上面的redis缓存问题
- 引用静态资源的url添加版本号,解决版本发布后的浏览器缓存有关问题
- 对于新上线的javascript与客户端缓存存在冲突,到时客户端执行的是老代码的问题解决
- ejb客户端的三种调用方法,以及InitialContext lookup后的jndi对象在服务重启后缓存失效的问题
- 解决非浏览器客户端请求nginx无法命中缓存的问题
- rmi客户端影响myeclipse中的jar打包问题
- web开发中客户端脚本产生的浏览器缓存问题
- 读取jar包的文件,有缓存的问题
- C# MVC 客户端cookie缓存导致验证出错问题
- 客户端webview持有的页面缓存,不会立即释放的问题解决