2

従業員レコードのリストが表示されるインデックス ページで OutputCaching を使用しています

[OutputCache(Duration = 120, VaryByParam = "empId;page;sort;")]

しかし、キャッシュのためにリストから1つのレコードを削除すると、削除されたレコードもOutputcacheの有効期限が切れるまでリストされます。削除操作が発生した場合に出力キャッシュを更新する方法はありますか? これを MVC3 カミソリ ページで使用しています。

私のページには何百ものレコードがリストされており、各レコードにはその特定のレコードを削除するための「削除」ボタンがあります。ページの読み込みを高速化するために、ページで OutputCaching も使用しています。

ここで、削除ボタンを押して 1 つのレコードを削除すると、OutputCaching が原因で、削除されたレコードも outputcache の有効期限が切れるまでページに表示されます。この問題を回避する方法はありますか?

outputCache から削除されたレコードのみを削除する方法はありますか?

または、新しいレコードを追加する場合、OutputCache を削除して再度キャッシュを再作成するのではなく、新しいレコードを既存の outputCache に追加しますか?

4

2 に答える 2

0

レコードを削除するとキャッシュが壊れるクエリ文字列パラメーターを URL に追加してみてください。これは、私が ajax get リクエストのクライアント キャッシュを破るために使用する一般的なアプローチです。

次に、そのクエリ文字列パラメーターを VaryByParam リストに追加するだけです。これをローカルでテストしたところ、deletedRecordId であるパラメーターに別の値を送信すると、出力キャッシングを強制的に中断することができました。

したがって、アイテムの削除が完了し、リスト アクションにリダイレクトしようとしているときはいつでも、RedirectToAction を使用している場合はルート値にパラメーターを渡すようにしてから、クエリ文字列パラメーターを保持するルート値の匿名オブジェクトを作成するだけです。キャッシュバスティング。これは次のようになります。

return RedirectToAction("list", "category", new { deletedRecordId = deletedRecordId });
于 2012-08-01T18:42:05.557 に答える
0

コントローラーまたはページの読み込みコードでは、次を使用します。

HttpContext.Cache.Insert("Record"+ recordid, 1);
Response.AddCacheItemDependency("Record"+ recordid);

レコード削除メソッドで使用

    HttpContext.Cache.Remove("Record"+ recordid);
于 2012-10-13T21:56:57.187 に答える