我想在我的asp.net页面上使用页面级缓存。因param工作正常 - 然而,页面内容以原始请求的语言缓存。如果请求相同的url / param且用户正在查看与第一个请求不同的语言环境(例如法语而不是英语) - 缓存以原始请求的语言(英语)返回页面内容。有没有办法根据变量param和基页类中的值缓存页面(如从Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName返回的属性值)?
答案 0 :(得分:4)
在OutputCache中设置VaryByCustom="Language"
并更新Global.asax文件以通过添加以下代码来覆盖HttpApplication.GetVaryByCustomString方法:
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if (custom.Equals("Language"))
{
return System.Threading.Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName;
}
else
{
return base.GetVaryByCustomString(context, custom);
}
}
此代码将使缓存所依赖的参数成为您的页面文化。
答案 1 :(得分:1)
使用datacache,您可以指定缓存名称。当我遇到这个问题时,我做了什么,我将pagedata缓存为pagename +本地化为cachename