文档

Java™ 教程
隐藏目录
避免不必要的更新检查
导航: 部署
课程: 深入部署
章节: 部署最佳实践

避免不必要的更新检查

富互联网应用程序(RIAs)会在本地进行缓存以提高启动时间。但是,在启动RIA之前,启动软件会检查RIA的Java网络启动协议(JNLP)文件中引用的每个JAR文件是否是最新的。换句话说,启动软件确保您正在运行的是最新版本的RIA,而不是旧的缓存副本。这些更新检查可能需要几百毫秒,具体取决于JAR文件的数量和网络速度。使用本主题中描述的技术,可以避免不必要的更新检查,并提升RIA的启动时间。


注意: 

这里使用术语“启动软件”来集体指代Java插件软件和Java Web Start软件。Java插件软件用于启动小程序,而Java Web Start软件用于启动Java Web Start应用程序。


利用版本下载协议

可以利用版本下载协议来消除不必要的版本检查。请参考以下步骤来启用此协议。

  1. 按照以下命名约定,为JAR文件添加版本号后缀进行重命名:
        
        <JAR文件名>__V<版本号>.jar
    
    例如,将DynamicTreeDemo.jar重命名为DynamicTreeDemo__V1.0.jar
  2. 在JNLP文件中,为每个JAR文件指定一个版本,并将jnlp.versionEnabled属性设置为true
    <resources>
        <!-- 应用程序资源 -->
        <j2se version="1.6+"
            href="http://java.sun.com/products/autodl/j2se"
                max-heap-size="128m" />
        <jar href="DynamicTreeDemo.jar"
            main="true" version="1.0"/>   
        <jar href="SomeOther.jar" version="2.0"/>
        <property name="jnlp.versionEnabled"
            value="true"/>
        <!-- ... -->
    </resources>
    

    当启用jnlp.versionEnabled属性时,启动软件仅执行一次更新检查,以确保JNLP文件是最新的。软件将JNLP文件中指定的版本号与JAR文件版本(根据步骤1中提到的命名约定)进行比较,并仅更新过时的JAR文件。这种方法很高效,因为仅网络上的JNLP文件会进行更新检查,所有其他版本检查都在本地进行。

    如果找不到具有正确版本号的文件,则启动软件尝试加载默认的JAR文件(例如DynamicTreeDemo.jar)。

后台执行更新检查

如果用户立即运行最新版本的RIA不是关键,可以指定所有更新检查都应在后台进行。在这种情况下,启动软件会启动本地缓存副本以供立即使用,并在后台下载更新的RIA版本。下次用户尝试使用RIA时,将启动新的RIA版本。要启用后台更新检查,请将以下行添加到您的JNLP文件中:

<update check='background'/>

下面的代码片段显示了一个启用了后台更新检查的示例JNLP文件:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="" href="">
    <information>
        <title>Applet Takes Params</title>
        <vendor>Dynamic Team</vendor>
    </information>
    <resources>
        <!-- Application Resources -->
        <j2se version="1.6+" href=
            "http://java.sun.com/products/autodl/j2se"/>
        <jar href="applet_AppletWithParameters.jar"
            main="true" />
    </resources>
    <applet-desc 
         name="Applet Takes Params"
         main-class="AppletTakesParams"
         width="800"
         height="50">
             <param name="paramStr" value="someString"/>
             <param name="paramInt" value="22"/>
     </applet-desc>
     <update check="background"/>
</jnlp>

上一页: 减少下载时间
下一页: 确保JRE软件的存在