私は現在、非常に動的な大規模な Web サイトに取り組んでいるため、大量の情報をほぼ永続的にメモリに保存する必要があります (チェックアウトの構成設定や、実装に使用されるツリーなど)。メニュー構造)。
この情報はセッション固有のものではなく、Web サイトを使用するすべてのスレッドで一貫しています。
このデータを ASP 内でグローバルに保持し、使用するたびに再ロードするのではなく、必要なときにアクセスできるようにする最善の方法は何ですか?
私は現在、非常に動的な大規模な Web サイトに取り組んでいるため、大量の情報をほぼ永続的にメモリに保存する必要があります (チェックアウトの構成設定や、実装に使用されるツリーなど)。メニュー構造)。
この情報はセッション固有のものではなく、Web サイトを使用するすべてのスレッドで一貫しています。
このデータを ASP 内でグローバルに保持し、使用するたびに再ロードするのではなく、必要なときにアクセスできるようにする最善の方法は何ですか?
ASP.NETキャッシング機能を使用することは良いオプションだと思います。Johnの回答に加えて、MicrosoftのPatterns&PracticesチームのCachingApplicationBlockを使用できます。
すべてAppSettingsの入力web.configは自動的にキャッシュされます(つまり、それらを使用するたびに XML から読み取られるわけではありません)。
キャッシュを自分で手動で操作することもできます。
編集:より良いリンク...
あなたの情報がセッション固有のものかどうかは正確にはわかりません...もしそうなら、ASP Session オブジェクトを使用してください。スケールの説明を考えると、おそらく Sql Server に状態を保存することを検討する必要があります。
http://support.microsoft.com/kb/317604
それが101のアプローチです。もう少し強力なものを探している場合は、memcached (Mem-Cache-Dee と発音します) をチェックしてください。
http://www.danga.com/memcached/
これは、Facebook や Twitter などのアプリが使用するシステムです。
幸運を!
これは、アプリケーションの状態を保持するさまざまな方法を探る良いビデオです。 http://www.asp.net/learn/3.5-videos/video-11.aspx アプリケーション全体、すべてのユーザーに対してグローバルな Application オブジェクトをブラッシングし、ヒット カウンターを作成する方法を示します (明らかに代わりにオブジェクトを格納できる整数を格納する方法)。変更を加える必要がある場合は、並行性のためにロックを使用する必要がありますが、大量のデータをどのように処理するかはわかりません。
ページが相互に依存しており、相互に投稿する場合は、ページのリクエスト オブジェクトを使用できます。おそらくあなたが探している答えではありませんが、間違いなく使用するメモリが最も小さいものの 1 つです。
私は通常、そのようなものを Application オブジェクトに保持します。