避免不必要的更新检查

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

Note:

此处,术语“启动软件”用于统称 Java 插件软件和 Java Web Start 软件。 Java 插件软件启动 Servlets,而 Java Web Start 软件启动 Java Web Start 应用程序。

利用版本下载协议

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

  • 重命名 JAR 文件以包含具有以下命名约定的版本号后缀:
<JAR file name>__V<version number>.jar

例如,将DynamicTreeDemo.jar重命名为DynamicTreeDemo__V1.0.jar

  • 在 JNLP 文件中,为每个 JAR 文件指定一个版本,并将jnlp.versionEnabled属性设置为true
<resources>
    <!-- Application 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 文件的更新检查。所有其他版本检查均在本地进行。

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

在后台执行更新检查

如果对用户立即运行 RIA 的最新版本并不重要,则可以指定所有更新检查都应在后台进行。在这种情况下,启动软件将启动本地缓存的副本以立即使用,并在后台下载较新版本的 RIA。下次用户try使用 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>