silverlight使用应用程式库快取,以减少XAP大小

转自

http://www.dotblogs.com.tw/help/archive/2010/07/22/16705.aspx

英文版vs2010称作Reduce XAP size by using application library caching
主要的功能就是用到的组件分离成各个zip档,使用者下载一次后,
重新再进入页面时,若组件没有变更的话就不用再次下载,
可以加快网页开启的速度,一般来说都会把不常改变的组件分离出来。
首先开一个silverlight application专案,在把一些比较大的组件加入,像是DataGrid。
为了简单的实验一下,就随便拉几个元件吧测试画面如下

 

 

 

分别有一个button,一个textblock,一个label,和一个DataGrid。
直接编译后,在web专案下的ClientBin内会产生xap档,

 

 

 

可以看出大小为221K,再用压缩程式看看内容

 

 

可以看出所有用到的组件都被包在一起,
接着我们选择专案的Properties,勾选Reduce XAP size by using application library caching

 

 

再次编译,得到以下的档案

 

 

可以看出xap变得很小,相关组件全都变成zip档,这些组件没有变更的话,
重新浏览网页就只需要下载5K的xap档。
因为这些组件是基本就有的,所以我们很容易可以分离他,若是想要分离自己的组件呢?
我们先随便加入一个Silverlight library的专案,然后再将此专案的dll引入这边我就加入一个TalkLib的专案

 

 

然后在TalkLib专案的Properties里设定Sign the assembly

 

 

取个好名字,这是放key的档案的名称,可以随便取。
接着记得重新编译Library专案,这样我们才能找到他的token
启动vs的命令提示工具

 

 

输入sn -T <组件完整路径与档名>

 

 

记下他显示的Token号码。
这边特别注意一点,要是你的组件里面参考到别的组件,被参考的组件也要是可以分离的才行!
接着再TalkLib专案新增一个xml档案,名称必须为"组件名称.extmap.xml",
此例就是TalkLib.extmap.xml。 内容如下:

  1: <? xml version ="1.0" encoding ="utf-8" ? > 
  2: < manifest xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" 
  3: xmlns:xsd ="http://www.w3.org/2001/XMLSchema" > 
  4: < assembly > 
  5: < name > TalkLib </ name > 
  6: < version > 1.0.0.0 </ version > 
  7: < publickeytoken > 31bf3856ad364e35 </ publickeytoken > 
  8: < relpath > TalkLib.dll </ relpath > 
  9: < extension downloadUri ="TalkLib.zip" ></ extension > 
  10: </ assembly > 
  11: </ manifest > 

内容分别是组件名称、版本编号、token、组件档案全名、下载档案名称。
其中最重要的就是downloadUri,不可以打错,其他好像乱打都可以

 


然后设定此档案的properties,让他cpoy到local。
因为此xml档案必须和dll放在一起,所以这样做比较方便。
这样就大功告成了,编译后就会发现连我们自己的组件都脱离了~

你可能感兴趣的:(silverlight)