5

アプリケーションで何かをキャッシュする必要がある場合、以前は Web.Caching.Cache を選択していました。しかし、代わりに HttpApplicationState を使用するレガシーコードに遭遇しました。

Web.Caching.Cache はより強力で柔軟であるため (はるかに多くのように見えます)、HttpApplicationState を使用する方が良い状況はありますか??

いくつかの例を見せていただければ幸いです:-)

4

1 に答える 1

17

との両方HttpApplicationStateWeb.Caching.Cache使用して、ASP.Net アプリケーション全体でグローバルにアクセスできる情報を格納できます。ただし、用途は大きく異なります。

HttpApplicationState通常は変更されないアプリケーション データを格納するために使用されます。通常、アプリケーションの起動時にGlobal.asaxApplication_Startに入力されます。個人的にはあまり使用したことがありませんが、通常は、アプリケーションのすべてのユーザーにグローバルで、変更されないか、ほとんど変更されないアプリケーション構成の小さな断片を保存するために使用されると思います。アプリケーション状態になったものは、アプリがリサイクルされるまで無期限に残ります。ただし、リサイクルして再起動すると、再度実行され、再入力されます。Application_Start

HttpApplicationStateはシングルトンであり、スレッドセーフではないことに注意してください。そのため、変更を加えるときは、 および を呼び出して Application オブジェクトをロックおよびロック解除する必要がありApplication.Lock()ますApplication.UnLock()続きを読む

ASP.Net コンテンツをキャッシュするには、ページ レベル、部分ページ、およびデータの 3 つの方法があります。あなたの質問に最も関連があると思うので、データキャッシングについて話します。ASP.Net キャッシュは、要求ごとにデータ ストアから取得するにはコストがかかる大量のアプリケーション データを格納するために使用されます。と Cacheの主な違いは次のHttpApplicationStateとおりです。1) キャッシュ データは、さまざまなトリガーまたは条件 (時間、その他のキャッシュ依存関係など) によって期限切れになり、メモリから消去されるように設計されていますHttpApplicationStateが、アプリがリサイクルされるまで永久に存在します。2)サーバーで深刻なメモリ不足が発生している場合、キャッシュ データはメモリから消去される可能性があります。そのため、キャッシュ データが存在することを期待することはできず、存在するかどうかを常にテストする必要がありますが、HttpApplicationState常に存在します。

キャッシングは、リクエストごとにデータベースから取得する必要のないデータをアプリケーションの近くに格納するために使用されます。キャッシングは非常に大量のデータを保存するように設計されており、インテリジェントなキャッシング アーキテクチャはパフォーマンスに大きなプラスの影響を与える可能性があります。

于 2012-05-25T03:31:00.183 に答える