1、使用页面输出缓存
使用下面代码指令启用页面输出缓存
<%@ OutputCache Duration="15" VaryByParam="none" %>
Duration是缓存时间
VaryByParam是参数(参数可是查询字符串或者表单(Form)参数)
如下:
<%@ OutputCache Duration="999" VaryByParam="sc_no" %>
VaryByParam:有两个特殊的值:
none:导致所有的查询字符串或者表单参数呗忽略。只有一个版本的页面缓存。
*:导致专递到页面的查询字符串或表单参数的任意变化都会创建一个新版本的页面缓存。
2、基于控件变化的输出缓存
VarByControl特性用于根据页面中的特定控件的值生成不同版本的页面缓存,该特性在需要创建单页面概要/详细表单时将非常有用。
如下代码:
<%@ OutputCache Duration="3600" VaryByControl="DropDownList1" %>
3、基于头变化的页面缓存
VarByHeader特新:使得在特定的浏览器头的值变化时,可以创建不同版本的页面缓存。
头的值如下:
accept_language:代表请求页面的用户希望的优先级的值变化顺序的人类语言列表。
User_Agent :代表请求页面的设备的类型
Cookie:代表当前域名下创建的浏览器Cookie。
4、基于浏览器变化的页面缓存
浏览器变化的页面缓存:使用VaryByCustom特性
<%@ OutputCache Duration="3600" VaryByParam="none" VaryByCustom="browser" %>
5、基于自定义函数变化的页面缓存
使用VaryByCustom创建不同版本的页面缓存
重写GetVaryByCustomString方法来创建自定义函数。
如下:Global.asax
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if (String.Compare(custom,"css")==0)
{
return Request.Browser.SupportsCss.ToString();
}
return base.GetVaryByCustomString(context, custom);
}
在页面
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Browser.SupportsCss)
pnlCss.Visible = true;
else
pnlNotCss.Visible = true;
}
<%@ OutputCache Duration="3600" VaryByParam="none" VaryByCustom="css" %>
<div>
<asp:Panel ID="pnlCss" runat="server" Visible="false">
<span style="font-weight:bold;">
有样式: Hello
</span>
</asp:Panel>
<asp:Panel ID="pnlNotCss" runat="server" Visible="false">
<p>
Hello
</p>
</asp:Panel>
</div>
4、设置缓存位置
使用如下命令:
<%@ OutputCache Location="Any" Duration="3600" %>
Location值:
Any:页面呗缓存在浏览器、代理服务器和web服务器上(默认值)。
Client:页面只缓存在浏览器。
DownStrea:页面缓存在浏览器和任何代理服务器,但不缓存在web服务器
None:页面不缓存
ServerAndClient:页面缓存在浏览器和web服务器,但不缓存在代理服务器。
注意:
但在Web配置文件中启用Windows身份验证是(没人情况),Cache-Control头自动设置private,Location特性的值将呗忽略。
5、创建页面输出缓存文件依赖
可以在一个缓存页面和硬盘上的一个文件(或者一组文件)之间创建一个依赖。但文件修改时,缓存页面自动失效并重新在下次页面请求时生成。
protected void Page_Load(object sender, EventArgs e)
{
sponse.AddFileDependency(MapPath("~/XMl/Movies.xml"));
}
6、设置页面输出过期
可以使用Response.RemoveOutputCacheItem()方法,以编程的方式从缓存中移除一个页面。
HttpResponse.RemoveOutputCacheItem(Page.ResolveUrl(""));
Response.RemoveOutputCacheItem()方法一次值允许从缓存中删除一个热面。如希望删除多个页面,需要创建一个所谓的键依赖(Key dependency)
。一个键依赖用于在缓存中的项目之间建立依赖。当第二个移除时,第一项目也会被自动移除。
Cache.Insert("DateTine",DateTime.Now);
Response.AddCacheItemDependency("DateTine");
Cache.Remove("DateTine");
7、创建页面输出缓存配置
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="CacheHour" duration="3600" varyByParam="none"/>
</outputCacheProfiles>
</outputCacheSettings>
</caching>
使用部分页面缓存
1、使用缓存后替换
2、用户控件缓存 :内容缓存在服务器上,而不是缓存在代理服务器上和浏览器上
3、共享用户控件的输出缓存
代码如下:
<%@ OutputCache Duration="3600" VaryByParam="none" Shared="true" %>
8、使用数据源缓存
除了在页面或用户控件级别进行缓存外,也可以在DataSource控件层面进行缓存。 所有三个标准的DataSource控件----SqDataSource、ObejectDataSource和XmlDataSource控件都包括了用于缓存Datas承载的诗句的属性(LinqDataSource控件不支持缓存)。
使用Datasource控件的好处:DataSource控件可以在数据跟新是自动重新载入数据。