ASP.NET的缓存

来源:互联网 发布:淘宝订单回流 编辑:程序博客网 时间:2024/05/16 10:31

我们知道一个网站在访问量巨大的时候,如果能使用缓存技术,可以明显降低网站的访问负担,所以废话不多说,我们来看一下在ASP.NET中如何能实现缓存。

 

首先应该清楚的是,在ASP.NET中,有两类缓存可以使用,第一类是输出缓存,第二类是数据缓存

 

输出缓存的通俗解释就是,就是我们把某个被访问的页面在用户访问时暂时生成,然后保存起来,这样在其他人访问此页面的时候,我们不需要再从新生成此页面,而只需要从这个已经生成的页面取得就可以了。这样就不需要再执行一次重新生成此页面的过程,大大减少服务器的负担。

 

另一类的数据缓存,从字面上来看很好理解,就是把经常需要用到的一些data,例如一些数据库中的数据,也一下子取出来,然后放到服务器的内存中,这样在使用到他们的时候,我们就不需要再去一遍遍的访问数据库,而只需要从内存中复用这些缓存的数据就可以了,这样也会大大减轻服务器的负担。

 

下面来看看这两个技术的具体细节。

 

我们先来看看输出缓存的例子,我们可以打开我们的VS.NET2005或者2008(甚至2010等等),建立一个新的ASP.NET网站项目(这一步很简单,在这里就不多说了),然后新建一个页面,这个页面很简单,我们可以在页面的page_load事件中随便写一些什么代码,最便于发现页面被缓存的毫无疑义是输出时间了,我们可以明显发现时间没变来告诉人们这个页面被缓存过了,所以我们可以在我们的page_load事件中这样写:

 

lbldate.Text="now the time is :<br/>";

lbldate.Text+=DateTime.Now.ToString();

 

然后我们只要在我们页面的aspx文件的顶端加入OutputCache指令,向下面这样:

 

<%@ OutputCache Duration="20" VaryByParam="None" %>

 

这样我们的页面就会被服务器缓存,周期为20秒。

 

20秒之内,不管有多少人访问,所有对此页面的请求都只会从缓存中取得。

 

关于VaryByParam特性

 

而其中的VaryByParam特性的意思是,当为None时,表示只是缓存本页面的一个副本,而不考虑查询字符串的情况。而当将VaryByParam设置为*值时,表示将考虑访问字符串的情况。这个时候,服务器会对每个对此页面的带不同访问字符串的访问分别缓存。

 

另外我们还可以将VaryByParam设置为具体的查询字符串,以针对某个查询字符串进行特定的缓存,例如,我们可以这样:

 

<%@ OutputCache Duration="20" VaryByParam="ProductID;CurrencyType" %>

 

这样的好处就是,服务器会针对ProductID和CurrencyType这两个字符串的请求来分别缓存页面,而忽略其他的请求字符串。

 

 

 

 

<本文代码有部分来自于麦当劳和马里奥合著的《ASP.NET高级程序设计》中,这本书确实不错!>