2011-07-04 4 views
1

私はdbでオブジェクトを操作する管理アプリケーションと、主にこれらのオブジェクトを表示するpublic asp.net mvcアプリケーションを持っています。他のアプリケーションからHttpRuntime.Cacheアイテムを削除する

私はHttpRuntime.Cacheを使用するいくつかのオブジェクトに対して単純なキャッシングを実装しました。

パブリックアプリケーションのキャッシュの一部を管理アプリケーションから無効にしたいと考えています。

最も簡単な解決策は、呼び出されたときにキャッシュ内のすべてのレコードをクリアするClearCache()アクションを作成することでした。

しかし、キャッシュの依存関係を使用するキャッシュを利用する方が良いとは思いませんか?どのようなものを使うのがベストなのか分かりません。私はSQLの依存関係について考えていましたが、SQLクエリーをスキップするためにキャッシングを行っているので、これは速いとは確信できません。

sqlキャッシュの依存性のチェックが遅いですか?キャッシュされたオブジェクトを多くのケースで使用したい場合は、毎回SQLの依存関係が良好でないとチェックします。

+0

2つの異なるASP.NETアプリケーションはありますか? –

+0

1つは銀色のアプリ、もう1つはasp.netアプリです。 – SoonDead

答えて

0

テーブルごとにSQL依存キャッシュを持つか、一緒に処理すると思われるレコードに対してクエリを選択することをお勧めします。いくつかのパーティションに対して別々のキャッシュエントリを作成することを検討することができます(たとえば、国固有のデータがある場合は、各国のデータを適切なSQL依存関係を持つ別のキャッシュエントリに保持します)。

+0

実際には、キャッシュがローカルの場合はHttpRuntimeキャッシュを削除し、リモートアプリケーションのキャッシュ要素を削除する場合はリモートコントローラアクションを呼び出すことで、deleteメソッドでICacheProviderを2つの実装で作成して解決しました。 SQL依存関係の実装もあるかもしれませんが、パフォーマンス面では良いアイデアかどうかまだ分かりません。 – SoonDead

1

CacheDependencyを使用できます。

別々のアプリケーションが2つある場合。ファイル依存オプションを使用できます。 (キャッシュキー依存オプションもあります)

アプリケーションから特定のファイル(空のファイルでもよい)をタッチすると、同じファイルに依存する他のアプリケーションキャッシュ項目は自動的に期限切れになります。

異なるファイルを使用して、異なるカテゴリのキャッシュアイテムを期限切れにすることができます。

関連する問題