使用自定義字符串對頁的各個版本進行緩存GetVaryByCustomString
廣告:
使用自定義字符串對頁的各個版本進行緩存:
protected void Page_Load(object sender, EventArgs e)
{
Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);
Response.Cache.SetVaryByCustom("minorversion");
}
protected void Page_Load(object sender, EventArgs e)
{
Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);
Response.Cache.VaryByHeaders["Accept-Language"] = true;
}
<%@ outputcache duration="60" varybyparam="none" varybyheader="accept-language" %>
VaryByHeader-- 更據HTTP頭信息改變緩存區內容(不支持用戶控件輸出緩存)
<%@ OutputCache Duration="#ofseconds"
Location="Any | Client | Downstream | Server | None |
ServerAndClient "
Shared="True | False"
VaryByControl="controlname"
VaryByCustom="browser | customstring"
VaryByHeader="headers"
VaryByParam="parametername"
CacheProfile="cache profile name | ''"
NoStore="true | false"
SqlDependency="database/table name pair | CommandNotification"
%>
VaryByCustom
表示自定義輸出緩存要求的任意文本。如果賦予該屬性的值為 browser,緩存將隨瀏覽器名稱和主要版本信息的不同而異。如果輸入自定義字符串,則必須在應用程序的 Global.asax 文件中重寫 GetVaryByCustomString 方法。
VaryByControl
一個分號分隔的字符串列表,用于更改用戶控件的輸出緩存。這些字符串代表用戶控件中聲明的 ASP.NET 服務器控件的 ID 屬性值
VaryByCustom="UserID"自定義
第一個:
public override string GetVaryByCustomString(HttpContext context, String arg) {
string cacheKey = "";
switch(arg) {
case "CategoryPageKey":
if (Request.IsAuthenticated == true) {
cacheKey = "QQQ" + context.Request.QueryString["category_id"] + context.Request.QueryString["requestedPage"];
}
else {
cacheKey = "AAA" + context.Request.QueryString["category_id"] + context.Request.QueryString["requestedPage"];
}
break;
case "UserID" :
if (Request.IsAuthenticated == true) {
cacheKey = "UserID_In";
}
else {
cacheKey = "UserID_Out";
}
break;
}
return cacheKey;
}
第二個:
global.asax 文件中:
<script>
public override string GetVaryByCustomString(HttpContext context, string arg){
If (arg = "minorversion "){
Return "Version= " + context.Request.Browser.MinorVersion.ToString();
}
}
</script>
第三個:
<%@ Application Language="C#" %>
<script runat="server">
public override string GetVaryByCustomString(HttpContext context, string arg)
{
if (arg.ToLower() == "prefs ")
{
HttpCookie cookie = context.Request.Cookies["Language"];
if (cookie != null)
{
return cookie.Value;
}
}
return base.GetVaryByCustomString(context, arg);
}
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
}
</script>
廣告: