Многоязычный контент Кэш

Я знаю, что это очень простой вопрос, но все же я запутался в этом. В одном из моих интервью они спросили меня, что у меня есть веб-сайт, который является многоязычным (10 языков). Я хочу поместить все содержимое в кеш. Могу ли я узнать, как достичь этой функциональности? Это что-то конкретное, что нам нужно написать в кэше вывода?

Все содержимое хранится в файлах ресурсов.

0
nl ja de

2 ответы

Я предполагаю, что вы запрашиваете его в контексте кэширования вывода, поэтому простой подход заключается в использовании 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
3
добавлено
@alok_dida, внимательно прочитайте ответ! Культура в URL является одним из подходов. Вы всегда можете использовать VaryByCustom - вместо Context.Request.UserLanguages ​​[0] , возможно, вам придется вернуть его из сеанса - что-то вроде Context.Session ["Culture «]
добавлено автор VinayC, источник
Он находится в переменной сеанса. Если я добавляю Культуру в URL-адрес, то на основе url он будет извлекать информацию из кеша, поэтому для этого мне не нужно ничего писать в выходном кеше, но как насчет того, когда он хранится в переменной Session.
добавлено автор alok_dida, источник

Нет, за исключением того, что, очевидно, вы должны указывать разные URL-адреса на каждый язык, но это необходимо anyawy, иначе только langauge по умолчанию будет в поисковых системах (которые не помнят Cookies и т. Д.).

1
добавлено
+1 для ответа на вопрос «как кешировать, если SEO важен». Также он не будет отвечать на вопрос интервью - вероятно, ожидается, что он задаст вопросы (то есть, если SEO важен, если контент доставляется напрямую или через CDN ...) - и знание другого ответа (+1 к @VinayC) полезно для интервью ...
добавлено автор Alexei Levenkov, источник
Нет. В принципе, это не выход. Кэширование будет работать только по URL-адресу, и каждый, кто делает multi langauge по тому же URL-адресу, будет «SEO Challenged» и не должен создавать веб-сайты. Вам НЕОБХОДИМО иметь культуру/язык как часть URL-адреса, иначе поисковые системы видят только один язык, когда они используют URL для различения элементов. Кому-то нужно «как веб работает для начинающих», чтобы создать правильное пространство URL.
добавлено автор TomTom, источник
URL будет таким же. Это не так. Можно ли достичь?
добавлено автор alok_dida, источник
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)