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 回答