HttpContext.CacheとHttpRuntime.Cache
10720 ワード
Asp.Netではキャッシュを簡単に使用できますが、CacheではHttpContext.という2つの方法で呼び出されます.CacheとHttpRuntime.Cache.では、この2つのCacheにはどんな違いがありますか?
まずMsdnの注釈を見てみましょう:HttpRuntime.Cache:現在のアプリケーションのCacheを取得します.HttpContext.Cache:現在のHTTPリクエストのCacheオブジェクトを取得します.
では、HttpRuntimeについてですか.Cacheはアプリケーションレベルで、HttpContext.Cacheはユーザーごとに?NOであるが,実際には両者が同じオブジェクトを呼び出す.彼らの違いは呼び出し方が違うだけだ(私の知っている限り).
事実は雄弁に勝る.例を書いて証明する.
この例では簡単に証明できます. HttpContext.Cacheが保存したCache,HttpContext.CacheとHttpRuntime.Cacheはすべて読み取ることができます. HttpRuntime.Cacheが保存したCache,HttpContext.CacheとHttpRuntime.Cacheはすべて読み取ることができます. どのユーザがどのようにCacheを変更しても、他のユーザがどのように読み取ったCacheコンテンツも変化する.
HttpRuntime.Cacheはキャッシュの具体的な実装クラスに相当する、このクラスはSystemに置かれているが.Webネーミングスペースの下にあります.しかし、非Webアプリケーションも使用できます(コンソールなどの他のタイプも使用できます).HttpContext.Cacheは、上述したキャッシュクラスのカプセル化であり、HttpContextにカプセル化されているため、HttpContextを知っている限りでしか使用できない、すなわちWebアプリケーションにのみ使用できるようになっている.
まずMsdnの注釈を見てみましょう:HttpRuntime.Cache:現在のアプリケーションのCacheを取得します.HttpContext.Cache:現在のHTTPリクエストのCacheオブジェクトを取得します.
では、HttpRuntimeについてですか.Cacheはアプリケーションレベルで、HttpContext.Cacheはユーザーごとに?NOであるが,実際には両者が同じオブジェクトを呼び出す.彼らの違いは呼び出し方が違うだけだ(私の知っている限り).
事実は雄弁に勝る.例を書いて証明する.
///
<summary>
///
HttpRuntime.Cache Cache
///
</summary>
private
void
btnHttpRuntimeCacheSave_Click(
object
sender, System.EventArgs e)
{ HttpRuntime.Cache.Insert(cacheKey, cacheValue,
null
, DateTime.Now.AddMinutes(
3
), TimeSpan.Zero); }
///
<summary>
///
HttpRuntime.Cache Cache
///
</summary>
private
void
btnHttpRuntimeCacheLoad_Click(
object
sender, System.EventArgs e)
{
if
(HttpRuntime.Cache[cacheKey]
==
null
)
{ cacheContent
=
"
No Cache
"
; }
else
{ cacheContent
=
(
string
)HttpRuntime.Cache[cacheKey]; }
lblCacheContent.Text
=
cacheContent; }
///
<summary>
///
HttpContext.Cache Cache
///
</summary>
private
void
btnHttpContextCacheSave_Click(
object
sender, System.EventArgs e)
{ HttpContext.Current.Cache.Insert(cacheKey, cacheValue,
null
, DateTime.Now.AddMinutes(
3
), TimeSpan.Zero); }
///
<summary>
///
HttpContext.Cache Cache
///
</summary>
private
void
btnHttpContextCacheLoad_Click(
object
sender, System.EventArgs e)
{
if
(HttpContext.Current.Cache[cacheKey]
==
null
)
{ cacheContent
=
"
No Cache
"
; }
else
{ cacheContent
=
(
string
)HttpContext.Current.Cache[cacheKey]; }
lblCacheContent.Text
=
cacheContent; }
この例では簡単に証明できます.
HttpRuntime.Cacheはキャッシュの具体的な実装クラスに相当する、このクラスはSystemに置かれているが.Webネーミングスペースの下にあります.しかし、非Webアプリケーションも使用できます(コンソールなどの他のタイプも使用できます).HttpContext.Cacheは、上述したキャッシュクラスのカプセル化であり、HttpContextにカプセル化されているため、HttpContextを知っている限りでしか使用できない、すなわちWebアプリケーションにのみ使用できるようになっている.