我知道这是一个非常基本的问题,但我仍然对它的实现感到困惑。在我的一次采访中,他们问我有一个多语言(10 种语言)的网站。我想将所有内容放在缓存中。我可以知道如何实现此功能吗?我们需要在输出缓存中写入什么特定的东西吗?
我的所有内容都驻留在资源文件中。
我知道这是一个非常基本的问题,但我仍然对它的实现感到困惑。在我的一次采访中,他们问我有一个多语言(10 种语言)的网站。我想将所有内容放在缓存中。我可以知道如何实现此功能吗?我们需要在输出缓存中写入什么特定的东西吗?
我的所有内容都驻留在资源文件中。
我假设您是在输出缓存的上下文中询问它,所以一个简单的方法是使用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
不,除非显然您应该为每种语言设置不同的 URL - 但无论如何都需要这样做,否则只有默认语言将永远出现在搜索引擎中(不记得 Cookie 等)。