Советы по внедрению кеш-решения для сайта - PullRequest
2 голосов
/ 15 ноября 2010

Я работаю над публичным сайтом, который скоро не будет на 100% публичным. Платные пользователи смогут получить доступ к 100% функций, тогда как «анонимные» пользователи получат доступ к сокращенной версии.

Проблема в том, что анонимные и платные пользователи будут иметь доступ к одним и тем же страницам, но они будут видеть разные вещи.

Интересно, как продолжать использовать кеш для всех страниц? Я на 100% уверен, что показываю правильный контент для каждого типа пользователей. Будет крайне плохо показывать кэшированную версию платного сайта анонимному пользователю (и наоборот).

Желательно, без добавления чего-либо в URL, чтобы дифференцировать тип пользователя.

Спасибо!

Ответы [ 2 ]

1 голос
/ 15 ноября 2010

Я думаю, что то, что вы ищете, будет достигнуто с помощью опции varbycustom для кэширования вывода.Используя это, вы определяете функцию, возвращающую значение пользовательского параметра, которое используется при получении выходной кэшированной версии страницы, чтобы пользователи получали свою собственную персонализированную кэшированную версию, и все анонимные пользователи должны видеть одну и ту же кэшированную версию, поскольку они будут использоватьнекоторые одинаковые значения.Вот ссылка с дополнительной информацией: http://aspadvice.com/blogs/ssmith/archive/2007/10/29/VaryByCustom-Caching-By-User.aspx

Для программного кэширования данных вы должны использовать идентификатор пользователя как часть ключа для получения данных для достижения того же эффекта.

1 голос
/ 15 ноября 2010

Вы можете использовать кеш приложения для своих бизнес-данных, который в основном представляет собой словарь пар ключ-значение, в который вы можете поместить все, что захотите.Затем вы можете программно проверить, вошли ли они в систему. Вы по-прежнему будете отображать страницу при каждом посещении, но, надеюсь, получение кэшированных данных обеспечит необходимое повышение производительности.

В качестве альтернативы это может быть возможно отключить кэш вывода программно, как описано в этом вопросе.

Цитата этот ответ от Дэвида Эббо :

В OnInit:

if (yourArbitraryCondition) {
    OutputCacheParameters outputCacheSettings = new OutputCacheParameters();
    outputCacheSettings.Duration = 60;
    InitOutputCache(outputCacheSettings);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...