6

ASP.NET でのキャッシュについて調べてみましたが、まだいくつか質問があります。

  1. Sql Cache Dependency を使用する場合...監視するテーブルを指定できることは知っていますが、それらのテーブルのいずれかに変更が発生した場合、キャッシュ全体がリセットされますか? 頻繁に変更されるテーブルをキャッシュしたくないことは理解していますが、キャッシュされたテーブルが一握りになる可能性があり、各テーブルが 1 日に数回しか更新されない場合でも、キャッシュが 50 回リセットされる可能性があります。毎日 (8 時間枠)。

  2. GAC DLL を介してこのキャッシュを作成および維持します。多数の異なるアプリケーションが、一度にその GAC にアクセスします。各アプリケーションは独自のキャッシュのコピーを保持していますか? それとも、1 つのグローバルな場所 (またはアプリケーション プールごと) に格納されているだけですか?

  3. キャッシュが現在消費している容量を確認できるサーバー上の物理的な場所はありますか? これは、各アプリケーションが独自のキャッシュを保持している場合、最終的に大量のディスク容量を消費する可能性があるため、非常に重要です。

  4. 物理的にキャッシュを強制的に再構築する方法はありますか? 上司が、特定の問題でキャッシュに問題があると想定しているのを見ることができたので、根本的なレベルでそれを除外できる必要がある. 「レコードを変更して、キャッシュを再構築する必要があると言う」のではなく、「[アクション X] を実行し、キャッシュにあったものがすべてなくなったことを知る」

あなたの答えと時間を前もってありがとう。

4

2 に答える 2

2
  1. SqlCacheDependency は、トリガーとポーリングに依存する古いスタイルの SQL 2000 アプローチでのみテーブルを監視します。SQL 2005 以降の方法では、行レベルで変更を監視し、Service Broker を使用します。Cache オブジェクトのレベルでは、変更によって、指定された SqlCacheDependency に関連付けられた Cache エントリのみが無効になります (キャッシュ全体ではありません)。

  2. 各アプリケーションには、キャッシュの個別のコピーがあります。同じデータを共有するアプリが多数ある場合は、別の "キャッシュ サーバー" を作成し、WCF を使用してそこからアプリにデータを取得させることを検討できます。基本的には、アプリに別の層を追加します。

  3. いくつかのキャッシュ関連のパフォーマンス カウンターを確認できますが、ASP.NET キャッシュは完全に RAM に格納されるため、ディスク領域が問題である場合は心配する必要はありません。さらに、RAM がいっぱいになると、キャッシュの機能の 1 つは、古いオブジェクトやあまり参照されないオブジェクトを手放して、新しいオブジェクト用のスペースを作ることです。

  4. キャッシュを強制的に削除する最も簡単な方法は、アプリケーションまたは AppPool を単純にリサイクルすることです (デフォルトでは 1 日に 1 回程度です)。よりターゲットを絞ったものが必要な場合は、Cache.Remove() またはリンクされた依存関係を使用して、キャッシュから特定のアイテムを強制的に削除するコードを記述する必要があります。

于 2011-12-29T23:41:21.583 に答える
1

私の頭の上から:

  1. そのテーブルのコンテンツのみが無効になります。
  2. 各 Web アプリケーションには独自のキャッシュがあります。
  3. キャッシュはメモリに保存されます。この質問を参照してください。ASP.Net キャッシュの合計サイズを確認するにはどうすればよいですか? キャッシュサイズについて
  4. http://bit.ly/vsqNDlこれが役立つかもしれません
于 2011-12-29T22:41:02.653 に答える