wwa*_*rby 8 .net c# asp.net caching static-members
我最近一直在阅读有关ASP.NET的缓存策略的内容,而且我从未提及使用静态字段作为缓存存储的首选方法.这是一种不好的做法,如果是这样,为什么?以下是我通常如何使用它的示例:
public static Class Repository {
private static object _lockObject = new object();
private static List<Products> _products = null;
public static void GetProducts() {
if (_products != null) { return _products; }
lock(_lockObject) {
_products = DAL.LoadProducts()
}
return products;
}
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢这种模式的原因是,System.Runtime.Caching.MemoryCache是因为它不使用序列化,因此可以扩展到大对象; 我已经成功地使用它来从整个数据库表中缓存非常大的对象集合,然后我使用LINQ查询而不是使用SQL查询数据库,从而大大提高了性能.这种模式在以下场景中的许多项目中都很有用:
由于我发现这种模式非常有用,我很好奇为什么关于这个主题的各种书籍和教程甚至都没有真正讨论它作为一种选择.
Eri*_*sch -1
鉴于您对 MemoryCache 的理解是错误的,并且与静态存储相比,在 MemoryCache 中可靠地存储某些内容所需的代码更少,我不明白为什么您会坚持使用容易出错、泄漏且更困难的模式使用...
无论如何,有时使用静态来缓存某些内容是合适的。但是,一般来说,您应该初始化静态变量,并且在进程的生命周期中永远不要更改它们。一旦你开始玩东西,你就会开始感到疼痛。
| 归档时间: |
|
| 查看次数: |
2645 次 |
| 最近记录: |