Asp.net的局部缓存

如果页面的部分内容动态改变,而部分内容则是保持不变,我们则可以考虑用asp.net的局部缓存技术
       有两种方案可以解决,一种是控件缓存,即把不变的内容做成用户控件,然后让此控件缓存,而整个页面不会缓存。另一种是缓存后替换,即整个页面缓存,而用Substitution控件来处理动态内容。
一:控件缓存
在控件的ascx页面山写<%@ OutputCache Duration="120" VaryByParam="None" %>本控件缓存120秒
或者在服务端
[PartialCaching(120)]
public partial class CachedControl : System.Web.UI.UserControl
{
    // Class Code
}
注意两点:
1.  控件有缓存,所在页面也有缓存,如果控件缓存时间小于页面缓存时间,则页面缓存时间为主。
2.  如果控件缓存时间大于页面缓存时间,则页面缓存失效后控件仍然缓存。
二:缓存后替换
使用Substitution控件来实现,使用 MethodName 属性指定要在 Substitution 控件执行时调用的回调方法的名称
    <asp:substitution id="Substitution1"
      methodname="GetCurrentDateTime"
      runat="Server">
</asp:substitution>
服务端方法:
public static string GetCurrentDateTime (HttpContext context)
 {
    return DateTime.Now.ToString ();
 }
实例:
DataView   dv=(DataView)Cache["dv"];  
  if(dv==null)  
  {  
  System.Data.SqlClient.SqlConnection   sqlconn=new   System.Data.SqlClient.SqlConnection("数据连接字符串");  
  System.Data.SqlClient.SqlDataAdapter   cmd=new   System.Data.SqlClient.SqlDataAdapter("select   *   from   test",sqlconn);  
                                  DataSet   ds=new   DataSet();  
  cmd.Fill(ds,"test");  
  DG_main.DataSource=ds.Tables["test"].DefaultView;  
  Cache["dv"]=ds.Tables["test"].DefaultView;//设置缓存  
  }  
  else  
  {  
  DG_main.DataSource=Cache["dv"];//用缓存绑定  
  DG_main.DataBind();  
  }
Asp.Net缓存Cache使用一例 

本例完成建立缓存,清除缓存使用缓存进行数据绑定

public DataSet createCache(){
   //返回DataSet
  DataSet ds=new DataSet();
   OleDbConnection conn=new OleDbConnection

("provider=microsoft.jet.oledb.4.0;data source="+Server.MapPath("data.mdb"));
   conn.Open();
   string sql="select * from data1 order by createtime asc";
   OleDbDataAdapter cmd=new OleDbDataAdapter(sql,conn);
   cmd.Fill(ds);
   cmd.Dispose();
   conn.Dispose();
   return ds;
  }

  private void Button1_Click(object sender, System.EventArgs e)
  {//清除Cache
   Cache.Remove("DataList");
   Response.Write("缓存清除成功");
  }

  private void Button2_Click(object sender, System.EventArgs e)
  {//建立Cache
   if(Cache["DataList"]==null)
   {
    //缓存不存在建立缓存
    Cache.Insert("DataList",(DataSet)createCache());
    DataSet ds=(DataSet)Cache["DataList"];
    DataGrid1.DataSource=ds;
    DataGrid1.DataBind();
   }
   else
   {
    //缓存存在执行绑定
    DataSet ds=(DataSet)Cache["DataList"];
    DataGrid1.DataSource=ds;
    DataGrid1.DataBind();
   }
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值