是否可以使用asp.net页面级缓存,并根据参数和本地化进行更改
我想在我的asp.net页面上使用页面级缓存。vary by param工作正常-但是,页面内容以原始请求的语言缓存。如果请求相同的url/param,并且用户在与第一个请求不同的语言环境中查看(例如,法语而不是英语)-缓存将以原始请求的语言(英语)返回页面内容。有没有一种方法可以基于vary by param和基页类中的一个值(比如从Thread.CurrentThread.CurrentUICulture.TwoLetterIsLanguageName返回的属性值)缓存页面 使用datacache,您可以指定缓存名称。出现此问题时我所做的操作是在OutputCache中将pagename+本地化为cachename的pagedata缓存,设置是否可以使用asp.net页面级缓存,并根据参数和本地化进行更改,asp.net,caching,Asp.net,Caching,我想在我的asp.net页面上使用页面级缓存。vary by param工作正常-但是,页面内容以原始请求的语言缓存。如果请求相同的url/param,并且用户在与第一个请求不同的语言环境中查看(例如,法语而不是英语)-缓存将以原始请求的语言(英语)返回页面内容。有没有一种方法可以基于vary by param和基页类中的一个值(比如从Thread.CurrentThread.CurrentUICulture.TwoLetterIsLanguageName返回的属性值)缓存页面 使用dataca
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);
}
}
这段代码将使缓存所依赖的参数是您的页面区域性。我使用了这段代码,第一次将语言更改为其他语言。但是,不要切换回第一语言。此代码用于根据使用的语言允许缓存,而不是更改语言,因此此函数所依赖的语言切换逻辑中可能存在问题。您如何帮助我回答我的问题:?