0

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

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

4

2 回答 2

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 友好性(如果您的网站是面向内容的,这可能很重要),您可能希望将文化信息作为您的 url 的一部分。例如,

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

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

http://www.yourdomain.com/somepage.aspx?Culture=fr
于 2012-12-28T08:58:31.093 回答
1

不,除非显然您应该为每种语言设置不同的 URL - 但无论如何都需要这样做,否则只有默认语言将永远出现在搜索引擎中(不记得 Cookie 等)。

于 2012-12-28T08:33:35.500 回答