`
jiasongmao
  • 浏览: 648971 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

silverlight应用程序库缓存

阅读更多

应用程序库缓存可在用户重新访问网站时帮助改善启动性能。

当您使用应用程序库缓存时,Silverlight 将某些程序集打包成应用程序包外部的外部部件(.xap 文件)。应用程序包中的清单指定启动时所需的程序集,并指示它们是在应用程序包的内部还是外部。

当用户首次访问您的网页时,Silverlight 插件下载应用程序包以及所有需要的外部部件。这些文件添加到浏览器缓存中,以便可以在后续访问时再次使用。

所有下载的文件都受服务器和浏览器中的缓存配置设置约束。在典型的配置中,仅当文件不在缓存中或它们比缓存的版本更高时,才下载这些文件。

库程序集的更改机会远小于应用程序程序集。因此,将它们作为单独的文件进行缓存非常重要。这样,当您更改应用程序代码而非库代码时,许多回访者将只下载 .xap 文件。

Silverlight 随 Silverlight SDK 提供了许多库,而它们不是运行时的组成部分。这些库已预配置为用于应用程序库缓存。在 Visual Studio 中,这些库与运行时程序集一起位于"添加引用" 对 话框的".NET"选项卡上。还可以从 Silverlight SDK 文件夹访问它们。默认情况下,Silverlight SDK 安装在 %ProgramFiles%\Microsoft SDKs\Silverlight 文件夹中。还可以配置自己的程序集,以便支持应用程序库缓存。

应用程序库缓存仅影响应用程序在启动时需要的那些程序集。如果您的应用程序按需加载了一些程序集,该应用程序会始终从服务器检索这些程序集,而始终不会从浏览器缓存中检索。

下面的过程介绍如何启用和使用应用程序库缓存,以及如何配置自己的程序集进行缓存。

启用应用程序库缓存

  1. "解决方案资源浏览器" 中,选择要为其启用库缓存的 Silverlight 应用程序项目。

  2. "项目" 菜单上,选择项目名称 "属性"

    将显示项目设计器。

  3. "Silverlight" 选项卡上,选择"使用应用程序库缓存减少 XAP 大小"

    注意说明:

    不能在同一个应用程序中使用应用程序库缓存和浏览器外支持。浏览器外应用程序要求所有启动程序集驻留在应用程序包中。

  4. 添加对于 Silverlight SDK 中某个库程序集的引用,或者添加对于由有效的 assemblyShortName .extmap.xml 映射文件伴随的任何程序集的引用。

    这会导致发生以下操作:

    • 程序集引用添加到项目中,其中"复制本地" 值为 True。此值指示在启动时需要此程序集,并且该值与包内程序集使用的值相同。

    • 当您生成此项目时,生成操作会将此程序打包成一个单独的 zip 文件,并在应用程序清单中生成 ExtensionPart 元素。

    • 当 Silverlight 插件加载应用程序包时,它检查清单以搜索 ExtensionPart 元素,并下载所有对应的文件。如果您的应用程序实现初始屏幕,它将继续运行,直到加载所有外部部件。

将程序集配置为用于应用程序库缓存

  1. 在 程序集所在的相同位置创建一个映射文件。此文件必须与程序集同名,而将 .dll 文件扩展名替换为".extmap.xml"。例如,Silverlight SDK 程序集 System.Json.dll 具有名为 System.Json.extmap.xml 的映射文件。

  2. 按下面示例中所述将配置数据添加到映射文件中,并替换程序集元素中的值以与程序集匹配。

    <?xml version="1.0"?>
    <manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
              xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <assembly>
        <name>System.Json</name>
        <version>2.0.5.0</version>
        <publickeytoken>31bf3856ad364e35</publickeytoken>
        <relpath>System.Json.dll</relpath>
        <extension downloadUri="System.Json.zip" />
      </assembly>
    </manifest>
    
    

    name version publickeytoken 元素必须与对应的程序集元数据相匹配。relpath 元素指示程序集文件名。最后,extension 元素通过 downloadUri 属性指示打包的外部部件的名称。

    downloadUri 属性 (Attribute) 值用于填充应用程序清单中的 ExtensionPart. Source 属性 (Property),如下面的清单摘要中所示。

    <Deployment.ExternalParts>
      <ExtensionPart Source="System.Json.zip" />
    </Deployment.ExternalParts>
    
    

    如果 downloadUri 值是一个文件名,则当您添加对程序集的引用时,Visual Studio 提供以下支持:

    • 生成系统将程序集打包成具有指定文件名的 zip 文件。此文件将被复制到输出目录中 .xap 文件旁边。

    • 如果您使用相同的 downloadUri 文件名添加对于多个程序集的引用,则生成系统会将它们全部压缩成单个 zip 文件。

    • 不会自动添加 .zip 扩展名。尽管打包文件是 ZIP 文件,但您可以使用服务器要求的任何文件扩展名。

    如果 downloadUri 是一个绝对 URI,生成系统将不会对程序集打包。而是由您负责压缩程序集并将其部署到指定的 URI。这可用于创建由多个应用程序使用的库的单一存储库。但是,当您使用绝对 downloadUri 值时,应考虑以下问题。

    • 如果 URI 与 .xap 文件位于不同的域中,则该域必须在其根目录中具有跨域策略文件。有关更多信息,请参见 Silverlight 中的 HTTP 通信和安全

    • 请 记住,URI 是一个全局唯一标识符,可以引用非常具体的程序集文件。这意味着,您可以并且应该对不同的程序集版本使用不同的 URI。此外,当您在更新后的 URI 中部署新程序集版本时,应继续保持每个版本特定的 URI 和您创建的程序集。这有助于避免当使用 Silverlight 的一个版本构建的 .xap 文件试图加载使用其他版本构建的库时可能产生的问题。

在 Visual Studio 中测试应用程序库缓存

  1. 下载并安装 HTTP 通信监视器,例如,Fiddler 。这样,您就可以查看 HTTP 请求和响应,并验证是否未下载缓存的文件。

  2. 打开下面的 Windows 功能:

    • Internet 信息服务 (IIS)

    • IIS 元数据库和 IIS 6 配置兼容性

    • ASP.NET

    • Windows 身份验证

    IIS 是必需的,因为 Visual Studio 开发服务器在其 HTTP 响应标头中不启用缓存。

  3. 在管理员帐户的上下文中运行 Visual Studio。

  4. 在包含 Silverlight 项目的解决方案中,加入用于测试的 Web 项目。

  5. 将 Web 项目配置为使用 IIS,并从 HTTP 通信监视器中启用 localhost 监视。(例如,Fiddler 提供了一个代理 URL,您可以用它来替换"启动 URL" 值中的"localhost"。)

  6. 执行以下操作并观察产生的 HTTP 通信:

    • 在 Visual Studio 中运行您的应用程序。

    • 在浏览器中按 F5 以重新加载页面。

    • 在另一个浏览器窗口中打开该页的 URL。

    • 在 Visual Studio 中重新生成解决方案,然后在浏览器中重新加载页面。

    在初始下载之后,对于应用程序包和库文件的其他请求将不会生成附加的下载通信。而是请求由缓存的副本完成。但是,当您重新生成应用程序时,将检测到更改并且下载新副本。

分享到:
评论

相关推荐

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    5.2 global.asax应用程序文件 5.2.1 应用程序事件 5.2.2 演示应用程序事件 5.3 ASP.NET配置 5.3.1 machine.config文件 5.3.2 web.config文件 5.3.3 设置 5.3.4 5.3.5 5.3.6 5.3.7 通过编程读写...

    ASP.NET4高级程序设计(第4版) 3/3

    5.2 global.asax应用程序文件 140 5.2.1 应用程序事件 141 5.2.2 演示应用程序事件 143 5.3 ASP.NET配置 144 5.3.1 machine.config文件 144 5.3.2 web.config文件 147 5.3.3 设置 150 5.3.4 150 ...

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    1.2.1 控制台应用程序 10 1.2.2 从项目模板上创建项目 11 1.2.3 solution explorer窗口 13 1.2.4 项目属性 14 1.2.5 assembly information屏幕 15 1.2.6 编译设置 16 1.2.7 调试属性 20 1.2.8 引用 21 ...

    CLR.via.C#.(中文第3版)(自制详细书签)Part1

    》针对.NET Framework 4.0和多核编程进行了全面更新和修订,是帮助读者深入探索和掌握公共语言运行时、C#和.NET开发的重要参考,同时也是帮助开发人员构建任何一种应用程序(如Microsoft Silverlight、ASP.NET、...

    CLR.via.C#.(中文第3版)(自制详细书签)

    》针对.NET Framework 4.0和多核编程进行了全面更新和修订,是帮助读者深入探索和掌握公共语言运行时、C#和.NET开发的重要参考,同时也是帮助开发人员构建任何一种应用程序(如Microsoft Silverlight、ASP.NET、...

    CLR.via.C#.(中文第3版)(自制详细书签)Part3

    》针对.NET Framework 4.0和多核编程进行了全面更新和修订,是帮助读者深入探索和掌握公共语言运行时、C#和.NET开发的重要参考,同时也是帮助开发人员构建任何一种应用程序(如Microsoft Silverlight、ASP.NET、...

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    》针对.NET Framework 4.0和多核编程进行了全面更新和修订,是帮助读者深入探索和掌握公共语言运行时、C#和.NET开发的重要参考,同时也是帮助开发人员构建任何一种应用程序(如Microsoft Silverlight、ASP.NET、...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Activity Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,是一个负责与用户交互的组件 SSH 为 Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。...

    ASP.NET.4揭秘

    8.6 数据库驱动的web应用程序示例284 8.7 小结287 第9章 使用sqldatasource控件288 9.1 创建数据库连接289 9.1.1 连接到microsoft sql server289 9.1.2 连接到其他数据库292 9.1.3 在web配置文件中保存连接字符串293...

Global site tag (gtag.js) - Google Analytics