[英]In memory caching in ASP.NET MVC 5 is not working
我正在开发一个 ASP.NET MVC 项目。 在我的项目中,我正在对某些数据进行内存缓存以获得更好的性能。 我对内存缓存的理解是它在服务器上缓存数据,所以无论客户端是谁,在下一个请求中,它都会从缓存而不是从数据库加载数据,然后发送回客户端。 我正在 ASP.NET MVC 5 中进行内存缓存,但它不起作用。
这是我缓存的 GetRegions 方法:
public IEnumerable<Region> GetRegions(){
ObjectCache cache = MemoryCache.Default;
if(cache.Get("regions")==null)
{
IEnumerable<Region> regions = db.Regions;
cache.Add("regions", regions, DateTime.Now.AddDays(1));
return regions;
}
else
{
IEnumerable<Region> regions = (IEnumerable<Region>)cache.Get("regions");
return regions;
}
}
根据上面的代码,在第一个请求中cache.Get("regions")
将是 null。 但是在第二个请求中,它不应该为空。 但是每当我访问该方法时, cache.Get("regions")
始终为 null。 我在内存缓存中的做法是否正确?
您拥有的代码应该可以工作,尽管它并不完全正确(它在检查和使用之间留下了缓存过期的非常小的可能性),但由于您的过期时间很长,我怀疑这不是这里发生的事情。 要更正您的代码:
public IEnumerable<Region> GetRegions()
{
ObjectCache cache = MemoryCache.Default;
const string key = "regions";
IEnumerable<Region> regions = cache.Get(key) as IEnumerable<Region>;
if (regions == null)
{
regions = db.Regions;
cache.Add(key, regions, DateTime.Now.AddDays(1));
}
return regions;
}
我不确定这是否会解决您的问题!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.