Silverlight發布時的優化工作(上)
最近做開發時,silverlight的xap越來越大,如果不進行優化嚴重影響到客戶端的體驗,因此看了一些資料,總結一下。
一、XAP包是可分解的
Silverlight應用最終是借助于http協議以web形式到達客戶端的,我們編寫的silverlight包,就是xap,其實是一個壓縮包,包含了許多個控件及資源,可以通過更改后綴為ZIP,通過右鍵打開一探究竟。
了解這個基本知識后呢,就可以從分解這個xap包開始了進行優化工作了,這里的優化工作分為兩部分:
- silverlight客戶端緩存驗證
- silverlight本身的DLL分解
- 資源的分解
二、Silverlight緩存資源的驗證
Silverlight在客戶端是可以緩存資源的,一次下載,重復使用。
這個可以通過Fiddler測試出來資源的加載情況。
三、利用VS2010中的silverlight中的利用選中“應用程序庫緩存減小xap體積”來控制每一次僅下載所需要的DLL。
在SL項目中添加一個childwindow,然后我們改寫一下MainPage.xaml.cs代碼:
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainPage_Loaded);
}
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
Test t = new Test();
t.Show();
}
就是在加載的時候彈出一個子窗口,此時編譯一下解決方案會發現:
在web下的ClientBin文件夾中多出了一個System.Windows.Controls.zip文件,這個就是因為選中了上面的選項,使用Fiddler監控一下會發現第一次加載如果不打開子窗口,就不會加載system.windows.controls.zip這個包了。
四、控制圖片資源
我們可以將圖片資源設置為content,并將圖片都放置在web下的文件夾內,這樣就大大減小了xap包的體積,并利用瀏覽器自帶的緩存HTTP請求資源來節省下次的下載量,如果將silverlight的DLL和資源分離開,將會減小xap下載的體積和縮短等待時間,并且可以利用IIS來做普通的圖片下載,利用瀏覽器自帶的緩存能力將第一次請求的圖片緩存起來備用。