Доступен ли доступ к HttpContext.Current.Cache для всех сеансов

В соответствии с заголовком. Я хочу сохранить некоторые данные в объекте кэша, но этот объект должен быть доступен для всех пользователей/сеансов и может истечь.

Каков наилучший способ достижения этого в веб-приложении asp.net?

Ответы

Ответ 1

HttpContext.Current доступна для всех страниц, но не обязательно для всех потоков. Если вы попытаетесь использовать его в фоновом потоке, ThreadPool delegate, асинхронный вызов (используя ASP.NET Async) и т.д., Вы получите NullReferenceException.

Если вам нужно получить доступ к кешу из классов библиотеки, то есть к классам, которые не имеют знания текущего запроса, вы должны использовать HttpRuntime.Cache. Это более надежно, поскольку оно не зависит от HttpContext.

Ответ 2

HttpContext.Current.Cache будет присутствовать, но Current следует использовать, только если вы не можете получить доступ к своему члену контекста.

Также, чтобы ответить на ваш второй вопрос, да, объект Cache является глобальным для приложения.

Здесь хорошее введение в кеширование...

Как кэшировать в ASP.NET с помощью Visual С#.NET

и...

Кэширование с помощью ASP.NET. Не пропустите часть 2, "Кэширование данных"