Page.Cache против HttpContext.Current.Cache

Я прочитал исходный код одного веб-приложения и увидел, что оно использует объект Cache (Web.Caching.Cache) для кэширования данных. В коде за файлами (файлы aspx.cs) он использует Page.Cache для получения кеша, в то время как в других файлах определения классов он использует HttpContext.Current.Cache для получения кеша. Интересно, почему он не использует ту же опцию для получения кеша. Может ли кто-нибудь объяснить различия между Page.Cache и HttpContext.Current.Cache? Зачем использовать каждый для каждого контекста выше. Могу ли я использовать Page.Cache или HttpContext.Current.Cache для обоих контекстов, указанных выше? Заранее спасибо.


person anhdktk    schedule 21.05.2014    source источник


Ответы (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
comment
Спасибо за ваш ответ. Это очень полезно для меня. - person anhdktk; 21.05.2014