asp.net2.0缓存学习
About the cache of Asp.net2.0
本文不是向你介绍asp.net输出缓存机制这样深的玩意.仅仅介绍一点asp.net2.0缓存的几个吸引人眼球的地方.嘿嘿.简单介绍,也是为将来使用做个备份.
1. 最为伟大的: 和sql2005数据库做到行级别的依赖.
缓存中的项依赖于 Microsoft SQL Server 2005、SQL Server 2000 或 SQL Server 7.0 数据库中表的更改。对于 SQL Server 2005,缓存中的项可依赖于表中的某一行。
a) 明确含义:把输出缓存和数据库中某张或某些表相关联,从而实现数据库未发生变化的时候,将缓存数据提交给用户.
b) 这样的好处是显然的:
i. 以前我们如何这点的?
ii. 它带来的性能上的提高.
c) 它通过一个和数据库保持关联的线程完成监控.
d) 如何实现?步骤罗列:
i. 注册要和输出缓存相关联的表.
1. 通过命令行工具(vs.net的),aspnet_regsql
如果你不知道怎么用,可以查询.aspnet_regsql -?
aspnet_regsql.exe -S <Server> -U <Username> -P <Password> -ed -d Northwind -et -t Employees
ii. 通过配置文件实现关联:
<connectionStrings>
<add name="TestConnectionString" connectionString="Data Source=.;Initial Catalog=Test;Persist Security Info=True;User ID=sa;Password=123"
providerName="System.Data.SqlClient" /
</connectionStrings>

<!-- caching section group -->
<caching>
<sqlCacheDependency enabled = "true" pollTime = "1000" >
<databases>
<add name="Northwind" 
connectionStringName=" TestConnectionString "
pollTime = "1000"
/>
</databases>
</sqlCacheDependency>
</caching>

在页面中添加输出缓存指令:
<%@ OutputCache Duration="3600" SqlDependency="Northwind:Employees" VaryByParam="none" %>
后面就是对数据库的操作,比如下面的例子是进行调试和查看效果的:
protected void Page_Load(Object sender, System.EventArgs e)
{
//自定义方法,将数据集合绑定到DataGrid
DataBind();
Label1.Text = System.DateTime.Now.ToString();
}//通过时间的变化,我们来判断这里是否被执行到
经过测试,我们发现,Label1的Text没有变化,说明,我们的DataBind()没有被执行.因为页面被缓存着.
但是,这时我们通过控制台去修改一下数据,效果很明显,时间变化了,说明监控线程发现了数据的变化,从而使输出缓存过期了.
2. <%@ OutputCache Duration="60" VaryByCustom="browser" VaryByParam="None"%>
a) 表示自定义输出缓存要求的任意文本。如果赋予该属性的值为 browser,缓存将随浏览器名称和主要版本信息的不同而异。如果输入自定义字符串,则必须在应用程序的 Global.asax 文件中重写 GetVaryByCustomString 方法。
3. <%@ OutputCache Duration="60" VaryByParam="City"%>
a) 分号分隔的字符串列表,用于使输出缓存发生变化。默认情况下,这些字符串与随 GET 方法属性发送的查询字符串值对应,或与使用 POST 方法发送的参数对应。将该属性设置为多个参数时,对于每个指定参数组合,输出缓存都包含一个不同版本的请求文档。可能的值包括 none、星号 (*) 以及任何有效的查询字符串或 POST 参数名称。
b) 根据参数来确定输出缓存,是不是很有意义!如果我们要根据city来查看天气,这样我们为每个城市搞一个缓存,以后遇到遇到同样的参数,就可以直接用页面缓存了.
4. 缓存部分页面
a) 这里有个控件介绍:
指定输出缓存网页上免于缓存的部分。在此位置,会检索动态内容,并以动态内容替换 Substitution 控件。为要缓存大部分内容的页提供了一种缓存局部页的简化解决方案。
b) AdRotator 广告条控件.微软实现时,把它定义成一种没有缓存的控件,无论你如何设计页面缓存,对它都没有用.
c) 如何使用Substitution?
i. 方法签名: public static string GetCurrentDateTime (HttpContext context) // 必须如此
ii.
d) 以下代码摘自MSDN.
posted on 2006-04-24 21:51 flyingchen 阅读(320) 评论(1) 收藏 举报


浙公网安备 33010602011771号