基于控件变化的输出缓存
VaryByControl属性用于根据页面中的特定控件的不同值来创建不用版本的页面缓存。
<%@ OutputCache Duration="3600" VaryByControl="dropCategories" %>
<asp:DropDownList
id="dropCategories"
DataSourceID="srcCategories"
DataTextField="Name"
DataValueField="Id"
Runat="server" />
<asp:DropDownList
id="dropCategories"
DataSourceID="srcCategories"
DataTextField="Name"
DataValueField="Id"
Runat="server" />
基于头变化的输出缓存
还有一个选择是使用VaryByHeader属性,使得在特定浏览器头的值变化时,可以创建不用版本的缓冲页面。
几个标准的浏览器头在每次页面请求时都会传递,这些头包含:
Accept-Language——代表请求页面中用户最希望的有优先级顺序的人类语言列表;
User-Agent——代表请求页面设备的类型;
Cookie——代表当前域名下创建的浏览器的cookie。
基于浏览器变化的输出缓存
如果想针对不用浏览器使用不用缓存版本,可以使用VaryByCustom属性。该属性接受一个特殊的browser值。当VaryByCustom的值为browser时,浏览器的类型和主版本号被认为重要并需要考虑的。
设置缓存位置
使用<% Outputcache%>指令的Location属性指定页面被缓存在哪里。该属性包含下面值:
Any——页面被缓存在浏览器、代理服务器端和web服务器端;
Client——缓存在浏览器;
DownStream——页面被缓存在浏览器和任何的代理服务器端;
None——页面不缓存;
ServerAndClient——页面被缓存在浏览器和web服务器端;