输出缓存是一种功能强大的技术,它通过缓存动态生成的页面来提高请求/响应的吞吐量。在访问量
大的网站中,可以将频繁访问的页面放入缓存,当有户再次发出相同请求时将缓存中的页面传回用户浏览
器,从页省去了重新生成页面的时间,提高了程序的性能。程序默认情况下启用输出缓存,但是却不为任
何响应都输出缓存的条件,除非使用页面指令明确指。
设置页面缓存,需要使用“@OutputCache”指令。启用输出缓存后,当发出对页面的第一个GET请求
时创建一个输出缓存项,随后的GET请求用该输出缓存项提供服务,直到该缓存请求过期。
激活输出缓存功能的指令如下:
第一种:通过HTML代码来实现:<%@ OutputCache Duration="90" VaryByParam="none" %>
引指令批示页面缓存时间是90秒(默认值为60秒),并且页面不随任何GET或POST参数改变。
第二种:通过代码来实现:Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
ResPonse.Cache.SetCacheability(HttpCacheability.Public);
SetExpires()方法用于设定缓存有效时间,参数为DateTime类型。SetCacheability()方法用于设定http头的Cache-Control部分,参数由HttpCacheability枚举提供。HttpCacheability 包含四个成员:
1.NoCache指定如果没有字段名,则指令应用于整个请求,且在满足请示前,共享(代理服务器)缓存必须对原始Web服务器强制执行成功的重新验证。如果字段名,则指令仅应用于命名字段,响应的其余部分可能由共享缓存提供。
2.Private指定响应只能缓存在客户端,而不能由共享(代理服务器)缓存进行缓存。此成员默认值。
3.Public指定响应能由客户端和共享(代理)缓存进行缓存。
4.Server指定响应仅缓存在源服务器上,与NoCache选项相似。客户端接收Cache-Control:no-cache指令,但文档是在原始服务器上缓存的。
下面是一个利用缓存技术的实例。示例页的代码如下所示:
<%@ OutputCache Duration="10" VaryByParam="none" %>
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
Msg.Text = DateTime.Now.ToString();
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="WebForm1" method="post" runat="server">
<asp:Label id="Label1" style="Z-INDEX: 101; LEFT: 280px; POSITION: absolute; TOP: 40px" runat="server" Font-Bold="True">输出缓存示例</asp:Label>
<asp:Label id="Label2" style="Z-INDEX: 102; LEFT: 208px; POSITION: absolute; TOP: 104px" runat="server">页面上次生成的时间:</asp:Label>
<asp:Label id="Msg" style="Z-INDEX: 103; LEFT: 384px; POSITION: absolute; TOP: 104px" runat="server"></asp:Label>
<asp:Button id="Button1" style="Z-INDEX: 104; LEFT: 312px; POSITION: absolute; TOP: 168px" runat="server" Text="Button"></asp:Button>
</form>
</body>
</HTML>
上下篇: Url Rewrite伪静态范化与SEO seo优化过度的特征分析及解决方法