asp.net 中缓存技术学习笔记
output Caching(输出缓存)
在页面的顶部注册outputcache
<%@ OutputCache Duration="10" VaryByParam="none" %>
duration(缓存有效期,单位为秒) varybyparam(是否跟参数有关)
如果形如show.aspx?id=1可以设置varbyparam="id" 也就是说根据id这个参数,生成html
Fragment caching(碎片缓存)
作用对象:用户控件
使用方法和output基本一致,在创建用户控件时,顶部加入<%@ OutputCache Duration="10" VaryByParam="none" %>
在页面加载时,页面中的用户控件被缓存下来,下次直接读取
data caching (数据缓存)
用户缓存dataset,对于页面上数据绑定控件非常有效,大大提高页面加载速度
原理:把数据绑定控件(gridview)中的数据保存在硬盘中,页面刷新时直接读取硬盘,而不操作数据库直到有数据更新
实例代码:
Dim source As DataView
source = Cache("MyDateSet")
If source Is Nothing Then
Dim strconn As String = ConfigurationManager.ConnectionStrings("databaseConnectionString").ToString
Dim conn As New SqlConnection(strconn)
Dim mycmd As New SqlDataAdapter("select * from table", conn)
Dim ds As New DataSet
mycmd.Fill(ds, "table")
source = New DataView(ds.Tables(0))
Cache("MyDateSet") = source
End If
GridView1.DataSource = source
GridView1.DataBind()
sql cache
修改数据库连接池
数据库中有数据更新时,缓存自动更新(最优)
指令如下:
aspnet_regsql.exe -S "server" -E -d "database" -ed
aspnet_regsql.exe -S "server" -E -d "database" -et -t "table"
(注:server:服务器 database:数据库 table:表单)
使用方法:
在页面上加入如下语句:
<%@ OutputCache Duration="9999999" VaryByParam="none" SqlDependency="database:table;database:table2"%>' 注:多个表单,中间用";"隔开即可
修改web.config文件
在<system.web>中加入如下代码:
<caching>
<sqlCacheDependency enabled="true" pollTime="1000"><!--polltime: 轮询数据库表的概率 毫秒-->
<databases>
<add name="database" connectionStringName="databaseConnectionString"/>
</databases>
</sqlCacheDependency>
<!--下面代码对outputcache有效-->
<outputCacheSettings>
<outputCacheProfiles>
<add name="CacheFor60Senconds" duration ="60"/>
</outputCacheProfiles>
</outputCacheSettings>
</caching>