Asp.net的局部缓存

原创 2007年10月01日 21:53:00
如果页面的部分内容动态改变,而部分内容则是保持不变,我们则可以考虑用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();
   }
  }

在ASP.NET MVC中使用分布式缓存

http://www.cnblogs.com/024hi/archive/2008/08/29/1279409.html  使用缓存是提高ASP.NET MVC应用程序性能的最好方式。我们知道,...
  • mituan1234567
  • mituan1234567
  • 2013年01月31日 14:20
  • 1202

asp.net 局部缓存、缓存后替换

有时缓存整个页面是不现实的,因为页的某些部分可能在每次请求时都需要变化。在这些情况下,只能缓存页的一部分。顾名思义,页面部分缓存是将页面部分内容保存在内存中以便响应用户请求,而页面其他部分内容则为动态...
  • M_Want_To_Fly
  • M_Want_To_Fly
  • 2013年07月16日 14:54
  • 725

ASP.NET中局部刷新的实现

由于项目中需要用到局部刷新功能,所以在网上搜索学习了下,顺便就整理下写个博客。ASP.NET中的局部刷新 复制去Google翻译翻译结果...
  • u010568463
  • u010568463
  • 2015年04月07日 16:59
  • 3971

smarty局部禁止缓存机制

模板缓存的好处是可以最大程度减轻数据库的压力。smarty作为是php最常用的模板引擎之一,其提供了很好的缓存机制:当用户首次访问某个页面时,程序从数据库提取数据,生成一个静态的html页面,当用户再...
  • eclothy
  • eclothy
  • 2014年04月09日 22:40
  • 1473

ASP.NET性能优化之局部缓存

在网站的开发过程中,经常碰到的一类需求场景是: 1:页面含热点新闻,热点新闻部分需要10分钟更新一次,而整个页面的其它部分1天内都不会变动; 2:首页的某个BANNER需要显式:欢迎***; 上...
  • luminji
  • luminji
  • 2013年11月27日 14:03
  • 445

ASP.NET中使用UpdatePanel实现局部异步刷新方法和攻略

ASP.NET中使用UpdatePanel实现局部异步刷新方法和攻略 UpdatePanel局部刷新的使用 ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果...
  • chenhongwu666
  • chenhongwu666
  • 2014年11月22日 23:13
  • 49497

PHP缓存技术OB系统函数--静态缓存与局部缓存

主要函数: ob_start()函数:打开输出缓冲区. 函数格式 void ob_start(void) 说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为...
  • haoyunyun888
  • haoyunyun888
  • 2016年04月18日 18:15
  • 3185

ASP.NET的缓存机制

Asp.NET提供了2中缓存机制来提供缓存功能: 应用程序缓存:允许开发者将程序生成的数据或报表业务对象放入缓存中。 页输出缓存:可以直接从中获取存放在缓存中的页面,而不需要经过繁杂的对该页面的再次处...
  • zhulongxi
  • zhulongxi
  • 2016年07月03日 12:59
  • 2557

ASP.NET cache缓存的用法

本文导读:在.NET运用中经常用到缓存(Cache)对象。有HttpContext.Current.Cache以及HttpRuntime.Cache,HttpRuntime.Cache是应用程序级别的...
  • mss359681091
  • mss359681091
  • 2016年04月06日 17:21
  • 6321

ASP.NET MVC:缓存功能的设计及问题

前言 为什么需要讨论缓存?缓存是一个中大型系统所必须考虑的问题。为了避免每次请求都去访问后台的资源(例如数据库),我们一般会考虑将一些更新不是很频繁的,可以重用的数据,通过一定的方式临时地保存起...
  • whereismatrix
  • whereismatrix
  • 2014年11月08日 17:52
  • 856
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: Asp.net的局部缓存
举报原因:
原因补充:

(最多只允许输入30个字)