数据缓存全面解析.docx
《数据缓存全面解析.docx》由会员分享,可在线阅读,更多相关《数据缓存全面解析.docx(27页珍藏版)》请在冰点文库上搜索。
![数据缓存全面解析.docx](https://file1.bingdoc.com/fileroot1/2023-5/3/95b9bfab-b405-49c3-8d6d-fa419b82f78d/95b9bfab-b405-49c3-8d6d-fa419b82f78d1.gif)
数据缓存全面解析
第九章:
ASP.NET缓存技术
序言
有时候总听到同学说网站运行好慢,不知如何是好;有时候也总见到一些同学写的网站功能看起来非常好,但访问性能却极其的差。
没有“勤俭节约”的意识,势必会造成“铺张浪费”。
如何应对这种情况,充分利用系统缓存则是首要之道。
系统缓存有什么好处呢?
举个简单的例子,你想通过网页查询某些数据,而这些数据并非实时变化,或者变化的时间是有期限的。
例如查询一些历史数据。
那么每个用户每次查的数据都是一样的。
如果不设置缓存,ASP.NET也会根据每个用户的请求重复查询n次,这就增加了不必要的开销。
所以,可能的情况下尽量使用缓存,从内存中返回数据的速度始终比去数据库查的速度快,因而可以大大提供应用程序的性能。
毕竟现在内存非常便宜,用空间换取时间效率应该是非常划算的。
尤其是对耗时比较长的、需要建立网络链接的数据库查询操作等。
缓存功能是大型网站设计一个很重要的部分。
由数据库驱动的Web应用程序,如果需要改善其性能,最好的方法是使用缓存功能。
缓存的分类
从分布上来看,我们可以概括为客户端缓存和服务器端缓存。
如图所示:
客户端缓存——这点大家都有直观的印象。
比如你去一个新的网站,第一次可能要花一阵子时间才能载入整个页面。
而以后再去呢,时间就会大大的缩短,原因就在于这个客户端缓存。
现在的浏览器都比较智能,它会在客户机器的硬盘上保留许多静态的文件,比如各种gif,jpeg文件等等。
等以后再去的时候,它会尽量使用本地缓存里面的文件。
只有服务器端的文件更新了,或是缓存里面的文件过期了,它才会再次从服务器端下载这些东西。
很多时候是IE替我们做了这件事情。
服务器端缓存——有些东西没法或是不宜在客户端缓存,那么我们只好在服务器端想想办法了。
服务器端缓存从性质上看,又可以分为静态文件缓存和动态缓存两种。
(1)静态文件缓存
好多页面是静态的,很少改动,那么这种文件最适于作静态缓存。
静态缓存再此不做讲解。
(2)动态缓存
动态缓存是比较有难度的。
因为你在缓存的时候要时刻注意一个问题,那就是缓存的内容是不是已经过时了。
因为内容过时了可能会有很严重的后果。
比如网上买卖股票的网站。
你给别人提供的价格是过时的,那人家非砍了你不可。
缓存如何发现自己是不是过时就是一个非常复杂的问题。
在ASP.NET中,常见的动态缓存主要有以下几种手段:
●传统缓存方式
●页面输出缓存。
●页面局部缓存。
●利用.NET提供的System.Web.Caching缓存。
●缓存依赖。
页面输出缓存
页面输出缓存是最为简单的缓存机制,该机制将整个ASP.NET页面内容保存在服务器内存中。
当用户请求该页面时,系统从内存中输出相关数据,直到缓存数据过期。
在这个过程中,缓存内容直接发送给用户,而不必再次经过页面处理生命周期。
通常情况下,页面输出缓存对于那些包含不需要经常修改内容的,但需要大量处理才能编译完成的页面特别有用。
需要读者注意的是,页面输出缓存是将页面全部内容都保存在内存中,并用于完成客户端请求。
在ASP.NET中页面缓存的使用方法非常的简单,只需要在aspx页的顶部加这样一句声明即可:
<%@OutputCacheDuration="60"VaryByParam="none"%>
Duration
缓存的时间(秒)。
这是必选属性。
如果未包含该属性,将出现分析器错误。
<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="WebForm1.aspx.cs"Inherits="CacheWebApp._16_4_3.WebForm1"%>
<%@OutputCacheDuration="60"VaryByParam="none"%>
//www.w3.org/1999/xhtml">
页面缓存示例
LabelID="Label1"runat="server"Text="Label">
Label>