【问题标题】:Reduce XAP Size Setting - What's the Benefit?减小 XAP 大小设置 - 有什么好处?
【发布时间】:2009-09-20 17:36:08
【问题描述】:

使用 Silverlight 3,我注意到 System.Xml.Linq.dll 已添加到我的 XAP 文件中,将大小从 12 k 增加到 58 k,因此我选中了框“通过使用应用程序库缓存减少 XAP 大小”。

将应用程序发布到 IIS,然后在启用 Web Dev Helper 的情况下加载它,我看到当我打开应用程序时,加载了 12k 的 XAP 文件,然后加载了 46k 的 System.Xml.Linq.zip,对于一共58k。每当我刷新应用程序的主页时,都会将相同的文件加载到浏览器中。如果我取消选中“减少...”框,然后将应用程序重新发布到 IIS,则每次加载应用程序时都会加载一个 58k 的 XAP 文件。

一种方法与另一种方法有何不同或更好?如果 dll 以某种方式保存在客户端计算机上,我可以看到优势,从而无需每次打开应用程序时都下载它。

谢谢 迈克·托马斯

【问题讨论】:

    标签: silverlight silverlight-3.0


    【解决方案1】:

    浏览器通过 URL 缓存,因此通过将您的应用程序分成经常更改的部分和可能长时间保持不变的部分(Linq 部分),甚至可以在应用程序之间共享,您可以节省一些下载。

    但这是否真的有帮助取决于具体情况(更改频率、“通用”DLL 的位置等)。

    【讨论】:

    • 这对我来说很奇怪。如果第一次加载应用程序时缓存了dll,那么为什么我在IE中单击“刷新”图标时再次上传了dll zip文件?我认为当MainPage页面通过刷新重新加载时,应用程序会看到 dll 已经被缓存并且不会从服务器请求它,但是根据 Web Dev Helper,它正在被请求并再次加载。
    【解决方案2】:

    保持 XAP 尺寸较小的全部原因是为了让您的应用程序尽可能快地加载。这很重要:即使在更快的连接上,臃肿的 XAP 也可能需要额外的几秒钟才能加载,这可能足以让您的用户离开您的网站。

    虽然 Linq 仅占 46KB,但在其他情况下,这可以带来更大的收益。例如,SyndicationFeed 类使处理 RSS 和 ATOM 提要变得非常容易,但它的大小为 114KB。

    应用程序库缓存有两个方面的帮助:

    1. 它允许在应用程序之间共享通用 DLL,因此如果另一个应用程序已经下载了系统 DLL,您的应用程序可以直接引用它。
    2. 它允许您的应用程序更新更小,因为框架 DLL 不会在 XAP 版本之间更改。

    【讨论】:

      【解决方案3】:

      不同之处在于,当 dll 位于 XAP 文件之外时,即使浏览器要求这些文件,webserver 也会以 304 Not Modified HTTP 响应进行响应。 默认情况下,浏览器不会要求再次下载这些文件。这显然可以节省时间,尤其是当项目引用“重”库时(即 Telerik 的大小可能非常大)

      希望这对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        • 2017-02-09
        • 1970-01-01
        • 1970-01-01
        • 2012-03-27
        • 1970-01-01
        • 2014-10-08
        相关资源
        最近更新 更多