是否可以使用不同的param和本地化的asp.net页面级缓存

时间:2011-07-25 19:35:53

标签: asp.net caching

我想在我的asp.net页面上使用页面级缓存。因para​​m工作正常 - 然而,页面内容以原始请求的语言缓存。如果请求相同的url / param且用户正在查看与第一个请求不同的语言环境(例如法语而不是英语) - 缓存以原始请求的语言(英语)返回页面内容。有没有办法根据变量param和基页类中的值缓存页面(如从Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName返回的属性值)?

2 个答案:

答案 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