在平常的開發工做中,緩存這個名字對你們來講是再熟悉不過了,確實,合理的使用緩存技術,對於提升性能,節省資源和改善用戶體驗起着很是重要的做用。作過web程序開發的人能夠想像一下,若是沒有Cookie,Session,Cache,ViewState這些東西,那將會怎樣?除此以外,在桌面程序,數據庫中,甚至咱們的計算機操做系統自己都用到了不少不少的緩存機制,這就是一個比較大的話題了。那麼在silverlight中使用緩存到底有多重要呢?
與通常的web程序不同,在啓動一個silverlight應用程序的時候,都得先加載一個後綴名爲.xap的文件(一個壓縮文件)。只有當整個文件加載完畢後,才能看到用戶界面,這也就意味着,用戶在使用silverlight的時候須要一個等待時間,可是隨着這個xap文件愈來愈大,這也就意味着用戶等待的時間也是愈來愈長。爲了解決這樣的問題,能夠這樣作:拆分應用程序到不一樣的子項目中,生成各個功能模塊的xap文件,最後在主項目中按需加載這些文件。
可是有些時候,項目中須要引用第三方的庫,並且這些庫若是很大很大.......這固然也沒問題,只須要把它們打包成xap文件,而後按需加載就能夠了。固然若是你願意每次都寫一遍經過WebClinet來加載外部的xap文件,那也是沒問題的,可是若是經過silverlight的應用程序庫緩存也能幫你解決這問題呢?你是否會考慮下呢?:)若是你要在項目中使用比較大的第三方庫,試試Application Library caching吧。它能幫你作不少工做,經過簡單的步驟,它就能夠爲你產生一個分離的xap文件,並在項目中按需加載。若是你有興趣,那接下來就來一塊兒看看這是若是實現的呢?
web
爲了探個究竟,咱們用記事本打開xaml文件,看到以下結果:
能夠看到,這裏是關於引用的dll文件的相關信息,包括Entry Point ,AssemblyPart,RuntimeVersion等信息。
接下來,咱們來引用一些第三方程序集,看看到底有什麼變化
編譯項目,再打開xap看看:
能夠看到多了咱們引用的dll文件,再看看xaml中的變化,能夠看到,裏面定義了所引用的dll文件的相關信息。
從上面這些簡單的例子能夠看出,很明顯,因爲引用了額外的dll文件,使得xap壓縮文件愈來愈大。知道了這些,接下來,咱們就來使用應用程序庫緩存,來處理這些問題吧。
數據庫
此時,在ClientBin目錄下多了兩個zip文件
就和以前沒使用緩存同樣,來看看xap文件中的狀況:
看到沒?和最開始沒有引用第三方dll同樣,裏面根本就沒有增長,接着打開xaml文件看下
這樣咱們能夠很清楚看到,沒有看到新添加的dll文件,而是以額外的部分指向了這些文件所在的壓縮文件。這樣當你運行程序的時候,加載的只是主要的資源文件,而這些額外的dll庫文件將會在被須要用到的時候加載。不過不能忘了此次的主題是緩存,所以在首次加載的時候,這些額外的dll(zip文件中的)也將被一同加載,接着將被緩存到瀏覽器中,當下次再次訪問時,用戶將只加載xap文件。瀏覽器