2012-02-23 7 views
3

Почему вы не можете установить индивидуальное истечение срока действия при добавлении элемента в объект Session?Кэш сеанса ASP.NET - срок действия отдельного элемента

С Cache.Add() вы можете установить абсолютное истечение и истечение срока годности. Почему вы не можете сделать это с помощью Session?

+0

Извините, что дайте такой короткий ответ, но это потому, что сеанс не является кешем. – HackedByChinese

+0

Возможный дубликат http://stackoverflow.com/questions/428634/cache-v-s-session – HackedByChinese

+0

Хорошо, но, допустим, я хочу хранить что-то на основе каждого пользователя, но с истечением срока действия. Разве это не вполне правильный сценарий? Какой был бы лучший способ достичь этого? –

ответ

5

Сессия не является кешем. Сессия - это способ преодолеть тот факт, что веб-связь не имеет гражданства. Для каждого сеанса настроено «ведро», поэтому вы можете привязываться к сеансу. Это время, когда сеанс пользователя заканчивается (обычно через 20 минут после его последней страницы).

Если вам нужно что-то истечение, даже для пользователя, вам нужно использовать кеш вместо сеанса. Вы можете использовать автоматизированный сахар и варьироваться в зависимости от пользователя. Или вы можете создать свою собственную абстракцию поверх одного из объектов кэша .NET (я использую MemoryCache для локального кэширования). Хотя я не могу сказать «использовать специальный код», есть преимущество с кешем, если сайт растет у пользователей, так как вы в один прекрасный день можете переходить в распределенный кеш, например, кэширование AppFabric, nCache (очень дружественный к сети) или memcached ,