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