2009-07-17 13 views
0

私はこの一般的なリストをメモリにキャッシュしています。テスト中に手動でキャッシュからそのオブジェクトを解放するにはどうすればよいですか?私はブラウザ上でキャッシュをクリアしましたが、リフレッシュすると、データベース検索メソッドでキャッシュされたオブジェクトがチェックされるため、同じセットの製品が取得されます。メモリからオブジェクトを解放する方法

答えて

0

coffeeaddict。独自のキャッシュ実装を使用している場合は、永続キャッシュを更新するたびにそのキャッシュされたデータを無効にする必要があります。次回の要求時にフルパスで上書きされます。

2

は、ASP.NETのキャッシュからオブジェクトを削除するCache.Remove()メソッドを試してみてください。

Cache.Remove("CacheKey"); 

キャッシュされた項目は、サーバのメモリに保存されているので、あなたは、ブラウザのキャッシュをクリアすることにより、明確なアプリケーションキャッシュすることはできません。

3

ブラウザのキャッシュ(クライアントマシン上)とサーバーサイドのキャッシュを混同しています。

0

データベースの取得方法はサーバー上で実行されていますが、これはブラウザのキャッシュとは関係がありません(ブラウザのキャッシュを消去すると何も行われません)。

あなたの質問はあまり明確ではありませんが、キャッシュ用にASP.Net Cacheオブジェクトを使用していると仮定しています。

ASP.netキャッシュの項目を更新するには、データベース取得メソッドにコードを追加する必要があります。あなたが持っているコードを投稿することができればそれが役立つだろうが、基本的には次のようになります。あなたが更新されたデータを使用するためのアプリのために、キャッシュの有効期限と削除を実装する必要が

var data = DatabaseFetchStuff.... 
Cache["databaseInfoKey"] = data; 
+0

私はBLメソッドを持っています。最初に、レコードのリストを作成するGeneric Listをチェックします。キャッシュされたオブジェクトがnullの場合、DBレイヤメソッドを呼び出してDBからリストを取得します。私の問題は、キャッシュリストにすでに値が設定されている場合、決して自分のDBメソッドを呼び出さないということです。その背後にある基本的なパラメータ化されたSQLを変更し、結果をテストしたいので、DBメソッドを呼び出すようにします。キャッシュされたオブジェクトのチェックをコメントアウトし、DBメソッドを呼び出してレコードを取得するように強制しますが、別の方法でこれを行うことに興味があります。 – PositiveGuy

+0

私はasp.netキャッシュオブジェクトを使用していません。私たちはメモリで作成されたオブジェクトをjusingしています。ここでも、私たちのBLメソッドは、そのオブジェクトがメモリ内にあるかどうかを確認して、以前にデータが格納されているかどうかを確認します。たとえば、データの汎用リストインスタンスをチェックします。 NULLの場合は、データベースからデータを取得し、そのキャッシュされたオブジェクトに再度データを取り込み、次にメモリ内の汎用リストインスタンスにデータがキャッシュされるようにします。 – PositiveGuy

+0

本当にコードを投稿する必要があります。これがASP.Netの場合、メモリ内のオブジェクトはページ要求間で持続しません。 – womp

関連する問題