Можно ли кэшировать результат, который будет отличаться для разных пользователей? - PullRequest
4 голосов
/ 06 августа 2010

Я прочитал несколько разных вещей, похоже, что кэш вывода не будет кешировать разные копии результатов для каждого пользователя. так что если у пользователя A есть 3 меню, а у пользователя B есть доступ только к 1 из них, то кэширование результата просмотра будет показывать все 3?

как я могу кэшировать вещи для каждого пользователя, чтобы он не был общим?

спасибо!

Ответы [ 3 ]

4 голосов
/ 07 августа 2010

Используйте VaryByCustom и переопределите HttpApplication.GetVaryByCustomString:

public virtual string GetVaryByCustomString(
    HttpContext context,
    string custom
)
{
    //Return a value unique per user
    //Change depending on the authentication of your site (f.e. make use of Session)
    return context.User.Identity.Name;
}

http://msdn.microsoft.com/en-us/library/system.web.httpapplication.getvarybycustomstring.aspx http://asp.net -tutorials.com / кэширование / более-выход-кэш /

1 голос
/ 06 августа 2010

Одним из решений является передача параметра с количеством меню. Затем настройте кэш вывода для всех параметров, кроме этого.

Также вы можете настроить кэш вывода для кэширования только на клиенте, а не на сервере. Это может быть полезно в зависимости от вашего сценария.

0 голосов
/ 06 августа 2010

Вы всегда можете кэшировать информацию о пользователе в сеансе asp.net.

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