こんにちは皆私は私のデータベースで他のクエリを作成せずに、同じリストをすべてのユーザーのために表示したいリストがあります。 フォーラムで検索私はOutPutCacheが私が従う最良の方法であることを発見しましたが、どうすればそれを行うことができるのか分かりません。Outputcacheを使用してすべてのユーザーに表示されるリスト<T>を保存するにはどうすればよいですか?
[EDIT]
がOutPutCacheそれを行うための最善の方法ですか?
こんにちは皆私は私のデータベースで他のクエリを作成せずに、同じリストをすべてのユーザーのために表示したいリストがあります。 フォーラムで検索私はOutPutCacheが私が従う最良の方法であることを発見しましたが、どうすればそれを行うことができるのか分かりません。Outputcacheを使用してすべてのユーザーに表示されるリスト<T>を保存するにはどうすればよいですか?
[EDIT]
がOutPutCacheそれを行うための最善の方法ですか?
あなたはここにあまりにも遠くになっています。あなたが持っているものがすべて1つのList<T>
だとしばらくの間メモリに保存したいのであれば、出力キャッシングは必要ありません。出力キャッシングは、レンダリングされたページ全体をキャッシュして、コントローラーを呼び出さずにユーザーに送信する場合に使用します。
共有変数またはプレーンな古いキャッシュのいずれかを使用して、オブジェクトをメモリに保持するだけで済みます。
public class MyListFetcher<T>
{
public List<T> FetchData()
{
List<T> obj = HttpRuntime.Cache["myObjectCacheKey"] as List<T>;
if(obj != null)
return obj;
obj = FetchDataFromDatabase();
HttpRuntime.Cache.Insert("myObjectCacheKey", obj, null, DateTime.Now.AddMinutes(5), Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
// Inserts the item and keeps it there for five minutes; then the cache will be invalidated. No sliding expiration
return obj;
}
protected List<T> FetchDataFromDatabase()
{
// Your DB fetch code
}
}
コントローラメソッドの[OutputCache]属性はクエリの結果をキャッシュします.VaryByParamパラメータを使用すると、そのパラメータの結果がキャッシュされ、コントローラメソッドからデータベースへの呼び出し回数が減ります。
助けてくれてありがとう、私はそれをやろうとします。 –
それは働いている!どうもありがとう! –