Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多语言内容缓存_C#_Asp.net_Multilingual_Resource Files - Fatal编程技术网

C# 多语言内容缓存

C# 多语言内容缓存,c#,asp.net,multilingual,resource-files,C#,Asp.net,Multilingual,Resource Files,我知道这是一个非常基本的问题,但我仍然对它的实现感到困惑。在我的一次采访中,他们问我有一个多语言(10种语言)的网站。我想把所有的内容都放到缓存里。我可以知道如何实现这个功能吗?我们需要在输出缓存中写入哪些特定内容 我的所有内容都驻留在资源文件中。否,除非您显然应该为每种语言提供不同的URL,但这是必需的,否则搜索引擎中只会出现默认语言(不记得Cookies等)。否,很明显,每个语言都应该有不同的URL,但这是必须的,否则搜索引擎中只会出现默认的语言(不记得Cookies等)。我假设您是在输出缓

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


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

否,除非您显然应该为每种语言提供不同的URL,但这是必需的,否则搜索引擎中只会出现默认语言(不记得Cookies等)。

否,很明显,每个语言都应该有不同的URL,但这是必须的,否则搜索引擎中只会出现默认的语言(不记得Cookies等)。

我假设您是在输出缓存的上下文中问这个问题的,所以一个简单的方法是使用
VaryByCustom
。比如说,

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

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

http://www.yourdomain.com/somepage.aspx?Culture=fr
根据您跟踪当前用户文化的方式,实现将有所不同。例如,您可能正在使用会话变量(或概要文件数据),因此需要基于会话变量等返回当前用户的区域性

从SEO友好性(如果你的网站是面向内容的,这可能很重要),你可能想把文化信息作为你的url的一部分。比如说,

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

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

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

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

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

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

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

http://www.yourdomain.com/somepage.aspx?Culture=fr
根据您跟踪当前用户文化的方式,实现将有所不同。例如,您可能正在使用会话变量(或概要文件数据),因此需要基于会话变量等返回当前用户的区域性

从SEO友好性(如果你的网站是面向内容的,这可能很重要),你可能想把文化信息作为你的url的一部分。比如说,

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

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

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

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

URL将是相同的。没什么不同。有可能实现吗?没有。基本上这是不可能的。缓存将仅通过URL工作,任何在同一URL下使用多语言的人都是“SEO挑战”,不应该设计网站。您需要将文化/语言作为URL的一部分,否则搜索引擎永远只能看到一种语言,因为它们使用URL来区分项目。有人需要“网站如何为初学者工作”来设计一个合适的URL空间。“如果SEO很重要,如何缓存”的答案是+1。此外,它不会回答面试问题-一个人可能会提出问题(即,如果搜索引擎优化很重要,如果内容直接或通过CDN交付…),并且知道另一个答案(+1到@VinayC)对面试很有用…URL将是相同的。没什么不同。有可能实现吗?没有。基本上这是不可能的。缓存将仅通过URL工作,任何在同一URL下使用多语言的人都是“SEO挑战”,不应该设计网站。您需要将文化/语言作为URL的一部分,否则搜索引擎永远只能看到一种语言,因为它们使用URL来区分项目。有人需要“网站如何为初学者工作”来设计一个合适的URL空间。“如果SEO很重要,如何缓存”的答案是+1。此外,它也不会回答面试问题-一个人可能会提出问题(即,如果搜索引擎优化很重要,如果内容直接或通过CDN交付…),并且知道另一个答案(+1到@VinayC)对面试很有用…它在会话变量中。如果我在URL中添加区域性,那么它将根据URL从缓存中获取信息,因此我不必在输出缓存中写入任何内容,但当它存储在会话变量中时会发生什么情况。@alok_dida,仔细阅读答案!url中的文化是一种方法。您可以始终使用
VaryByCustom
-而不是
Context.Request.UserLanguages[0]
您可能必须从会话返回它-类似于
Context.session[“Culture”]
它位于会话变量中。如果我在URL中添加区域性,那么它将根据URL从缓存中获取信息,因此我不必在输出缓存中写入任何内容,但当它存储在会话变量中时会发生什么情况。@alok_dida,仔细阅读答案!url中的文化是一种方法。您可以始终使用
VaryByCustom
-而不是
Context.Request.UserLanguages[0]
您可能必须从会话返回它-类似于
Context.session[“Culture”]