我决定实施缓存以提高产品页面的性能。目前,每个产品页面至少包含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;
}
}
}
如果您想知道为什么它包含在类和方法中;它主要是为了保持页面的整洁和清洁,减少代码重复并帮助防止错误。
答案 0 :(得分:3)
您需要确保缓存查询结果,而不是查询本身。我确保你枚举查询。最简单的方法是使用创建webgrid results.ToList()
编辑: 这就是我的意思。
results = database.Products.Where(
x => x.Range == Range
&& x.Category == Category).ToList();
您可以通过在代码中设置断点来监控缓存,并检查是否从WebCache.Get(cacheItemKey)
获得非空值。