Я прочитал исходный код одного веб-приложения и увидел, что оно использует объект Cache (Web.Caching.Cache) для кэширования данных. В коде за файлами (файлы aspx.cs) он использует Page.Cache для получения кеша, в то время как в других файлах определения классов он использует HttpContext.Current.Cache для получения кеша. Интересно, почему он не использует ту же опцию для получения кеша. Может ли кто-нибудь объяснить различия между Page.Cache и HttpContext.Current.Cache? Зачем использовать каждый для каждого контекста выше. Могу ли я использовать Page.Cache или HttpContext.Current.Cache для обоих контекстов, указанных выше? Заранее спасибо.
Page.Cache против HttpContext.Current.Cache
Ответы (1)
Нет никакой разницы, первый использует текущий экземпляр страницы и это _ 1_ property, последнее использует подход static
через _ 3_, который также будет работать в статическом методе без экземпляра страницы.
Оба относятся к одному и тому же кешу приложения.
Таким образом, вы можете получить Cache
через Page
, например, в Page_Load
:
protected void Page_load(Object sender, EventArgs e)
{
System.Web.Caching.Cache cache = this.Cache;
}
или в статическом методе (который используется в HttpContext
) через HttpContext.Current
:
static void Foo()
{
var context = HttpContext.Current;
if (context != null)
{
System.Web.Caching.Cache cache = context.Cache;
}
}
person
Tim Schmelter
schedule
21.05.2014
Спасибо за ваш ответ. Это очень полезно для меня.
- person anhdktk; 21.05.2014