.apsx
中使用的输出指令<%@ OutputCache duration="60" VaryByParam="None" Location="Server" VaryByCustom="ListingPageCookieCache"%>
global.asax.cs中的覆盖
public override string GetVaryByCustomString(HttpContext context, string arg)
{
if (arg == "ListingPageCookieCache")
{
if (condition)//pseudo coded
return "ListingPageCookieCache" + "us";
else
return "ListingPageCookieCache" + "ca";
}
return base.GetVaryByCustomString(context, arg);
}
我的问题/ 解释给您:
ca
缓存并检索输出正常。如果我要加载us
,ca
的缓存将丢失,但us
会被缓存并检索很好,直到其他人再次请求ca
。) @Kenneth - 更新
例如,当我将其写入global.asax文件
时if (arg == "ListingPageCookieCache")
{
var page = context.CurrentHandler as ShowListing;
if (page?.sub != null)
{
return "ListingPageCookieCache_" + page.sub.Type.ToString();
}
}
然后没有任何缓存 - 但不是因为字符串没有设置....
如果我改变上面的内容以使用context.PreviousHandler
,它会在页面第一次出现时进行缓存 - 但是当其他请求发生订阅更改时则不会,所以如果首先加载US,则加载US CA类型子。