页面缓存策略

来源:互联网 发布:斯塔克大厦数据 编辑:程序博客网 时间:2024/06/05 17:12

   页面缓存策略的实施可以很好的解决那些请求多,而变化少的页面或是数据的性能问题,一旦我们为这些内容实施了缓存策略,那末在特定时间以内(开发者设置),如果有新的请求,系统会直接从内存中调出缓存的内容,反馈给client,而不必每次都从数据库重新获得数据,再进行html转换后反馈。
   1.数据缓存:这里指的是利用cache进行数据缓存。关于cache的用法之前已经谈过,通常的做法是:对某些信息insert到cache中,并设置过期时间;每次调用cache的时候,检查是否为null ,如果是null,重新insert,负责直接使用cache中数据即可.当然也经常会采用文件依赖来动态更新cache数据。
   2.页面缓存:
   1)整个页面缓存。只需要在页面头部加入:

<%@ OutputCache Duration ="5"  VaryByParam ="none"  %>

其中的参数的含义,可以查询MSdn详细了解.这种情况实用于整个页面在一段时间内不会发生变化,比如“本周焦点”,“使用说明”等。但是实际上,我们还要对其中某些部分取消缓存动态显示。
      2)使用Substitution控件实现在整页缓存的页面中部分动态变化。
<asp:Substitution ID="Substitution1" runat="server"  MethodName ="MethodName"/>
这个控件在页面中只是个占位符,动态加载的信息会取代它的位置。其中的MethodName既是动态执行的后台方法名称.比如如果想在这里动态显示当前时间:
 public static string getTime(HttpContext context)
    
{
        
return DateTime.Now.ToString();
    }

注意:这个方法必须是:静态的public,并且只能返回string ,参数为HttpContext.
     当然还能做更多的事情,比如你可以在此检查用户权限,并显示用户信息等。
     3)如果只想使部分页面缓存,采用用户控件就是一个 好办法,因为在这里就可以设置期缓存参数:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="uc1.ascx.cs" Inherits="uc1" %>
<%@ OutputCache VaryByParam ="none" Duration ="10"  %>
UC-DateTime:
<asp:Label ID="Label1" runat="server"  Text=''></asp:Label>

public partial class uc1 : System.Web.UI.UserControl
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        Label1.Text 
= DateTime.Now.ToString();
    }

}

这样,如果把这个控件拖到页面中,那只会缓存uc部分,而不会对其他部分影响。