1

編集:

キャッシュを監視する方法はありますか?


商品ページのパフォーマンスを向上させるためにキャッシュを実装することにしました。現在、各製品ページには最低 3000 のエントリが含まれています。

キャッシュを使用すると、これらのページの読み込み時間が大幅に改善されます。しかし、データベースに新しいレコードを追加した後、それらの変更がブラウザーに反映されているため、実装が機能するかどうかはわかりません。

キャッシュが機能しない理由はありますか?

public class Acquire
{
    public class All
    {
        public WebGrid Products(String Range, String Category)
        {
            String cacheItemKey = Range + Category;
            bool cacheHit = true;
            Grid = WebCache.Get(cacheItemKey);

            if (Grid == null)
                cacheHit = false;

            if (cacheHit == false)
            {
                results = database.Products.Where(
                                   x => x.Range == Range && x.Category == Category);

                Grid = new WebGrid(results, canPage: false);

                // Add it to the Cache.
                WebCache.Set(cacheItemKey, Grid, 1, false);
            }

            return Grid;
        }
    }
}

なぜそれがクラスとメソッドにまとめられているのか疑問に思っている場合に備えて。これは主に、ページをきれいに保ち、コードの繰り返しを減らしてエラーを防ぐためです。

4

1 に答える 1

3

クエリ自体ではなく、クエリの結果をキャッシュしていることを確認する必要があります。つまり、必ずクエリを列挙してください。最も簡単な方法は、results.ToList() を使用して webgrid を作成することです。

編集:これは私が意味したことです。

results = database.Products.Where(
    x => x.Range == Range 
    && x.Category == Category).ToList();

コードにブレーク ポイントを設定してキャッシュを監視し、WebCache.Get(cacheItemKey).

于 2012-10-28T13:13:36.607 に答える