Можно ли использовать кэширование на уровне страницы asp.net с различными параметрами и локализацией - PullRequest
4 голосов
/ 25 июля 2011

Я хотел бы использовать кэширование на уровне страницы на своей странице asp.net. отлично работать с параметром - однако содержимое страницы кэшируется на языке исходного запроса. Если запрашивается тот же url / param и пользователь просматривает язык, отличный от первого запроса (например, французский вместо английского) - кэш возвращает содержимое страницы на языке исходного запроса (английском). Есть ли способ кешировать страницу на основе переменной по параметру и значения в базовом классе страницы (например, как значение свойства, возвращаемое из Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName)?

Ответы [ 2 ]

4 голосов
/ 26 июля 2011

В OutputCache установите VaryByCustom="Language" и обновите файл Global.asax, чтобы переопределить метод HttpApplication.GetVaryByCustomString, добавив следующий код:

public override string GetVaryByCustomString(HttpContext context, string custom)
    {
        if (custom.Equals("Language"))
        {
            return System.Threading.Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName;
        }
        else
        {
            return base.GetVaryByCustomString(context, custom);
        }
    }

Этот код сделает параметр, от которого зависит кэшна вашей странице культура.

1 голос
/ 25 июля 2011

С помощью datacache вы можете указать имя кэша.что я сделал, когда у меня возникла эта проблема, я кэширую pagedata с pagename + локализация как cachename

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...