态度决定高度、企图决定版图、格局决定结局

导航

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 -<Server> -<Username> -<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();

}
//通过时间的变化,我们来判断这里是否被执行到

经过测试,我们发现,Label1Text没有变化,说明,我们的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)    收藏  举报