asp.net 缓存总结

来源:互联网 发布:怎样提高淘宝店信誉度 编辑:程序博客网 时间:2024/06/07 07:44

本篇对asp.net缓存的总结,主要是参考了msdn的文章以及博客园中李天平的博客,用于以后查询。msdn里有详细的说明。如有不对之处,望指正。

asp.net中的缓存分为两类:页输出缓存和应用程序缓存。

页输出缓存
顾名思义,页输出缓存就是页面的缓存。
使用页输出缓存的方式有两种:

1. 声明方式:

             形式如:

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

             其中参数有 

Duration="#ofseconds"过期时间

Location="Any | Client | Downstream | Server | None | ServerAndClient"缓存存放的位置

Shared="True | False"是否可以共享

VaryByControl="controlname"缓存关联的控件

VaryByCustom="browser | customstring"缓存关联的参数(浏览器|自定义)

VaryByHeader="headers"http头

VaryByParam="parametername"缓存关联的url中参数(其实也可以关联控件)

CacheProfile="cache profile name | ''"配置文件中的缓存的设置

NoStore="true | false"

SqlDependency="database/table name pair |CommandNotification"关联数据库


大部分的页输出缓存的功能都是在这些参数中实现的。


2.编程方式:
Response.Cache.SetCacheability(HttpCacheability.Public);

具体的参数都在Cache类中。如需使用,可以自行查看。

几个缓存的说明:
1.VaryByParam。
以url中的参数做为依赖。如果不希望根据任何参数来改变缓存内容,请将值设置为 none。如果希望通过所有的参数值改变都更新缓存,请将属性设置为星号 (*)。如果希望通过特定参数值改变缓存,则将属性设置为特定值。
2.文件依赖项。

string fileDependencyPath = Server.MapPath("test.txt");Response.AddFileDependency(fileDependencyPath);


缓存依赖文件的改变。缓存的属性由前面所说的两种方法设定。

3.缓存键依赖项。
Response.AddCacheItemDependency("ProcessIntensiveReport");

4.sql server。
sqlserver与页输出缓存结合使用。当sqlserver中指定的表发生改变时,缓存清除。
1.使用之前,先要开启sqlserver缓存功能。具体步骤,百度。
2.配置文件

<caching>  <sqlCacheDependency enabled = "true" pollTime = "1000" >    <databases>      <add name="Northwind"          connectionStringName="NorthwindConnectionString1"         pollTime = "1000"      />    </databases>  </sqlCacheDependency></caching>


        这里的connectionStringName是在配置文件中数据库的配置名。   

                     

3.缓存设置

<%@ OutputCache Duration="3600" SqlDependency="Northwind:Employees" VaryByParam="none" %>



Northwind是数据库名。Employees是表名。
这样,当Employees不变时,就调用页缓存。Employees改变时,则清除缓存。

页输出缓存中除了整页的缓存之外,还有部分缓存。方式有两种:
1.控件缓存。把需要缓存的控件做成自定义控件,然后进行缓存。
2.缓存后替换。与控件缓存刚好相反,页面的其他部分缓存,替换部分页面请求都更新。主要是通过Substitution 控件实现,仅能用于字符串等的不缓存。有一定的局限性。

应用程序缓存
顾名思义,应用程序缓存是应用程序的一部分,生命周期和应用程序一样(符合缓存清除条件,也会清除缓存)。
它是一种键值对的形式展示,添加方式有两种:

1.

Cache["CacheItem1"] = "Cached Item 1";

2.cache类下的intser或者add方法。
具体查看msdn。

删除的方法也很简单:cache类下的remove()。

特别之处一点,intsert和add方法中有一个回调函数,当缓存清除时就调用此函数。


此外,应用程序缓存也可以和sqlserver结合使用,使应用程序缓存依赖于sqlserver。也是通过insert或者add方法实现的。










原创粉丝点击