多语言内容缓存

时间:2012-12-28 08:23:10

标签: c# asp.net multilingual resource-files

我知道这是一个非常基本的问题,但我仍然对它的工具感到困惑。在我的一次采访中,他们问我有一个多语言的网站(10种语言)。我想把所有内容放在缓存中。我可以知道如何实现这个功能吗?我们需要在输出缓存中编写什么特定的东西吗?

我的所有内容都驻留在资源文件中。

2 个答案:

答案 0 :(得分:3)

我假设您在输出缓存的上下文中询问它,因此一种简单的方法是使用VaryByCustom。例如,

<%@ OutputCache VaryByCustom="Culture" ... %>

在global.asax

public override string GetVaryByCustomString(HttpContext Context, string Custom)
{
    if (Custom == "Culture")
    {
        // return culture specific string
        return Context.Request.UserLanguages[0];  
    }
    return base.GetVaryByCustomString(Context, Custom);
}

实施方式将根据您跟踪当前用户文化的方式而有所不同。例如,您可能正在使用会话变量(或配置文件数据),因此您需要根据会话变量等返回当前用户的文化。

从SEO友好(如果您的网站是面向内容的,可能很重要),您可能希望将文化信息作为您网址的一部分。例如,

<%@ OutputCache ... varybyparam="Culture" %>

http://www.yourdomain.com/somepage.aspx?Culture=en

http://www.yourdomain.com/somepage.aspx?Culture=fr

答案 1 :(得分:1)

不,除了显然你应该使用不同的每种语言的URL - 但是这是必要的,否则只有默认语言才会出现在搜索引擎中(不记得Cookies等)。