我在我的WebPages网站上实现了缓存,但我认为它不起作用

时间:2012-10-28 12:50:08

标签: c# .net caching razor webmatrix

编辑:

有没有办法监控缓存?


我决定实施缓存以提高产品页面的性能。目前,每个产品页面至少包含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;
        }
    }
}

如果您想知道为什么它包含在类和方法中;它主要是为了保持页面的整洁和清洁,减少代码重复并帮助防止错误。

1 个答案:

答案 0 :(得分:3)

您需要确保缓存查询结果,而不是查询本身。我确保你枚举查询。最简单的方法是使用创建webgrid     results.ToList()

编辑: 这就是我的意思。

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

您可以通过在代码中设置断点来监控缓存,并检查是否从WebCache.Get(cacheItemKey)获得非空值。