我们在一个基于Java-Applet的Web应用程序中获得了性能 . 所以我们实现了JNLP概念来改进applet加载 .
根据JNLP,
JAR文件将首次下载到客户端计算机,并将在本地缓存
如果服务器中的applet版本与缓存中的applet版本匹配,则不会下载applet而是从缓存加载applet
如果服务器端的JAR版本有任何更改,则缓存中的旧JAR将替换为新的JAR
但在我们的应用程序中,它没有按预期工作 . 我们发现jnlp文件本身来自缓存,因此它包含旧的jar版本 .
有没有什么方法可以单独jnlp文件每次浏览器关闭打开时新下载?还是有其他替代方法来解决这个问题?
任何帮助深表感谢!!
JNLP文件
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="" href="" version="2.0.0.0">
<information>
<title>Active Viewer</title>
<vendor>Platts</vendor>
<offline-allowed/>
</information>
<resources>
<j2se version="1.6+"
href="http://java.sun.com/products/autodl/j2se"/>
<jar href="EWSApplet.jar" main="true" version="9.3.5.0" />
<property name="jnlp.versionEnabled" value="true"/>
</resources>
<applet-desc name="EWSApplet"
main-class="com.mycompany.ew.applet.EWS_Config.EWS_Config.class"
width="1"
height="1">
</applet-desc>
<update check="background" policy="always"/>
</jnlp>
2 回答
您可以尝试将JNLP文件设置为在浏览器中立即过期,即在下载时设置相应的 Headers ,如
expires
,cache-control
,no-cache
pragma等(通常您需要几个用于所有不同的浏览器) .我想你从某种网络服务器下载jnlp文件?如果是,那么你应该仔细看看链接到jnlp的网站 . 也许添加像 foobar.jnlp?version=xx.yy.zz 这样的东西可以提供帮助 . ?version=xx.yy.zz 将由服务器作为GET-Parameters处理(因此被文件选择忽略),但缓存时浏览器不会忽略它们 .
问候