使用Silverlight 3,我注意到System.Xml.Linq.dll已添加到我的XAP文件中,将大小从12增加到58 k,因此我选中了“使用应用程序库缓存减少XAP大小”框。 / p>
将应用程序发布到IIS,然后在启用Web Dev Helper的情况下加载它,我看到当我打开应用程序时,加载12k的XAP文件,然后加载System.Xml.Linq.zip为46k,共计58k。每当我刷新应用程序的主页面时,相同的文件都会加载到浏览器中。如果我取消选中“Reduce ...”框,然后将应用程序重新发布到IIS,则每当我加载应用程序时,都会加载一个58k的XAP文件。
一种方法与另一种方法有何不同或更好?如果dll以某种方式保存在客户端计算机上,无需在每次打开应用程序时下载它,我都可以看到优势。
由于 迈克托马斯
答案 0 :(得分:2)
浏览器通过URL缓存,因此通过将应用程序拆分为频繁更改的部分以及可能长时间保持相同的部分(Linq部分),甚至可以在应用程序之间共享,您可以节省一些下载。
但这取决于具体情况(变化的频率,'通用'DLL的位置等)是否真的有帮助。
答案 1 :(得分:1)
保持XAP大小的全部原因是您的应用程序尽快加载。这一点非常重要:即使连接速度更快,臃肿的XAP也可能需要额外的秒数才能加载,这可能足以让您的用户离开您的网站。
虽然Linq仅占46KB,但在其他情况下,这可能会产生更大的影响。例如,SyndicationFeed类使得处理RSS和ATOM源非常容易,但它的重量为114KB。
应用程序库缓存有两种方式:
答案 2 :(得分:1)
不同之处在于,当dll位于XAP文件之外时,即使浏览器要求这些文件,webserver也会响应304 Not Modified HTTP响应。 默认情况下,浏览器不会请求再次下载这些文件。这显然可以节省时间,特别是当项目引用“重型”库(即Telerik的库可能非常大)时
希望这有助于某人。