我想实现从db中提取的列表的缓存。我看过这个:
How can I cache objects in ASP.NET MVC?
我的代码中有这个:
var addresses = repository.GetAllAddresses();//returns IQueryable<string>
使用上面问题中的答案如何缓存这个?,我创建了类CacheExtensions,但不确定从那里开始。
答案 0 :(得分:4)
一旦你有了扩展方法,使用它就很简单了(不要忘记通过在包含它的命名空间中添加using指令,将已定义GetOrStore
方法的静态类带入范围将无法看到GetOrStore<T>
扩展方法):
IEnumerable<string> addresses = HttpRuntime
.Cache
.GetOrStore<IEnumerable<string>>(
"addresses",
() => repository.GetAllAddresses().ToArray()
);
注意事项:
.ToArray()
上调用IQueryable<string>
,以便急切地获取地址并将结果存储到缓存而不是查询中。