silverlight 中的应用程序库缓存


为什么要使用缓存?

 在平常的开发工做中,缓存这个名字对你们来讲是再熟悉不过了,确实,合理的使用缓存技术,对于提升性能,节省资源和改善用户体验起着很是重要的做用。作过web程序开发的人能够想像一下,若是没有Cookie,Session,Cache,ViewState这些东西,那将会怎样?除此以外,在桌面程序,数据库中,甚至咱们的计算机操做系统自己都用到了不少不少的缓存机制,这就是一个比较大的话题了。那么在silverlight中使用缓存到底有多重要呢?


与通常的web程序不同,在启动一个silverlight应用程序的时候,都得先加载一个后缀名为.xap的文件(一个压缩文件)。只有当整个文件加载完毕后,才能看到用户界面,这也就意味着,用户在使用silverlight的时候须要一个等待时间,可是随着这个xap文件愈来愈大,这也就意味着用户等待的时间也是愈来愈长。为了解决这样的问题,能够这样作:拆分应用程序到不一样的子项目中,生成各个功能模块的xap文件,最后在主项目中按需加载这些文件。


可是有些时候,项目中须要引用第三方的库,并且这些库若是很大很大.......这固然也没问题,只须要把它们打包成xap文件,而后按需加载就能够了。固然若是你愿意每次都写一遍经过WebClinet来加载外部的xap文件,那也是没问题的,可是若是经过silverlight的应用程序库缓存也能帮你解决这问题呢?你是否会考虑下呢?:)若是你要在项目中使用比较大的第三方库,试试Application Library caching吧。它能帮你作不少工做,经过简单的步骤,它就能够为你产生一个分离的xap文件,并在项目中按需加载。若是你有兴趣,那接下来就来一块儿看看这是若是实现的呢?

web



xap文件怎么越变越大?


在使用应用程序库缓存以前,咱们先来了解下xap文件中到底发生了什么。

首先咱们建立一个简单的项目:



接下来,看看解决方案浏览器下面,Reference下面:



能够看到,项目默认引用的一些程序集,此时,咱们还看不到xap文件,咱们编译下项目



看到了没?在ClientBin目录下生成了一个xap文件。

找到它后,修改该文件的后缀名为zip,看到了在它里面有一个xaml文件和一个dll文件



 为了探个究竟,咱们用记事本打开xaml文件,看到以下结果:



能够看到,这里是关于引用的dll文件的相关信息,包括Entry Point ,AssemblyPart,RuntimeVersion等信息。

接下来,咱们来引用一些第三方程序集,看看到底有什么变化



编译项目,再打开xap看看:



能够看到多了咱们引用的dll文件,再看看xaml中的变化,能够看到,里面定义了所引用的dll文件的相关信息。



从上面这些简单的例子能够看出,很明显,因为引用了额外的dll文件,使得xap压缩文件愈来愈大。知道了这些,接下来,咱们就来使用应用程序库缓存,来处理这些问题吧。


数据库

使用应用程序库缓存


首先,打开项目的属性面板,在silverlight标签下,能够看到一个“Reduce XAP size by using application library caching”选项,在前面打上勾。



编译项目后,能够看到,系统自动为外部引用的dll文件产生了一个对应的zip压缩文件。在压缩文件中正是新引用的dll文件。




 此时,在ClientBin目录下多了两个zip文件



就和以前没使用缓存同样,来看看xap文件中的状况:


看到没?和最开始没有引用第三方dll同样,里面根本就没有增长,接着打开xaml文件看下



这样咱们能够很清楚看到,没有看到新添加的dll文件,而是以额外的部分指向了这些文件所在的压缩文件。这样当你运行程序的时候,加载的只是主要的资源文件,而这些额外的dll库文件将会在被须要用到的时候加载。不过不能忘了此次的主题是缓存,所以在首次加载的时候,这些额外的dll(zip文件中的)也将被一同加载,接着将被缓存到浏览器中,当下次再次访问时,用户将只加载xap文件。浏览器

相关文章
相关标签/搜索