アプリケーションで何かをキャッシュする必要がある場合、以前は Web.Caching.Cache を選択していました。しかし、代わりに HttpApplicationState を使用するレガシーコードに遭遇しました。
Web.Caching.Cache はより強力で柔軟であるため (はるかに多くのように見えます)、HttpApplicationState を使用する方が良い状況はありますか??
いくつかの例を見せていただければ幸いです:-)
との両方HttpApplicationState
をWeb.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
常に存在します。
キャッシングは、リクエストごとにデータベースから取得する必要のないデータをアプリケーションの近くに格納するために使用されます。キャッシングは非常に大量のデータを保存するように設計されており、インテリジェントなキャッシング アーキテクチャはパフォーマンスに大きなプラスの影響を与える可能性があります。