Сохранение значений в сеансе или кэше - разница? ASP.NET - PullRequest
2 голосов
/ 31 мая 2011

Я хотел бы знать, когда именно мне следует использовать сессию и когда именно мне следует использовать кеш. Есть ли различия в производительности? Может ли один из них лучше обрабатывать много данных? Должен ли кэш использоваться только для материалов, связанных с приложением, а сеанс должен использоваться только для материалов, связанных с текущим сеансом / пользователем? Разумнее ли сохранять значения, полученные от БД в сеансе или в кеше - есть ли разница, если я сделаю ключи кеша уникальными? Например. Cache["MyKey"+UserId.ToString()].

Кроме того, в общем случае использование Session / Cache намного более разумно, чем получение данных из БД или веб-службы, или есть ли предел данных, которые будут извлечены быстрее?

1 Ответ

6 голосов
/ 31 мая 2011

Некоторые различия между сеансом и кешем:

  • Сеанс для пользователя, в то время как кэш для приложения
  • Вы можете сохранить данные сеанса вне процесса (SessionServer илиSqlServer) например, при использовании веб-фермы
  • То, что вы помещаете в сеанс, остается там до тех пор, пока сеанс не будет завершен / прекращен или истечет время ожидания
  • В кеше вы можете указать, что элементы автоматическиудалено через некоторое время (абсолютное) или после того, как к ним не было доступа некоторое время (скользящее)
  • Вы также можете использовать SqlCacheDependencies для удаления элементов из кэша при изменении некоторых данных в базе данных
  • среда выполнения ASP.NET также автоматически удаляет элементы из кэша, если доступной памяти становится мало

Что касается производительности:

  • Пока вы используете состояние сеанса InProc,Я предполагаю, что между сессией и кешем не будет разницы в производительности.
  • Как только вы используете внешнее состояние сеанса, производительность будетЯ, очевидно, ниже, чем InProc-кеш, но у меня нет никаких цифр (зависит от сети, мощности SQL-сервера и т. д.).
  • Кстати: существуют также решения распределенного кэширования, которые позволяют иметь внешний общий ресурс.кэш (аналогично состоянию сеанса вне процесса).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...