HttpRuntime.Cache不仅仅是一个简单的字典。它提供线程安全和缓存过期策略。它提供了使用自定义实现和受益于分布式缓存的可能性,这在Web场中很有用。
另一方面,关于分布式缓存的一些其他问题更具体,表明HttpRuntime.Cache
不是正确的选择:
Is it possible to share HttpRuntime.Cache between multiple web servers?
不,您无法共享内置的ASP.NET缓存[...]
Suggestions for simple .NET distributed caching solution
问题:
我们的网站使用标准
在ASP.NET 4.0中编写HttpRuntime.Cache
对象[...]
2011年12月由Darin Dimitrov回答:
与ASP.NET提供程序一起使用memcached是一种流行的选择。请记住,在.NET 4.0中,建议的缓存方法是使用新的ObjectCache
而不是HttpRuntime.Cache
。
Do HttpRuntime.Cache support for network load balancing?
不,缓存是针对每个应用程序(或者应用程序池可能 - 我必须检查它)。
据我所知,几年前使用它时我记得.NET缓存,HttpRuntime.Cache
可以与实际缓存的不同实现相结合:内存缓存,还有任何自定义提供程序,例如作为Redis的一员。这可能是在配置级别完成的,因此使用HttpRuntime.Cache
的实际代码不会对存储缓存数据的位置及其存储方式感到烦恼(并且可以在不修改的情况下从提供者切换到另一个源代码)。
如果这是真的,我想这会让Darin Dimitrov在他最初的回答中建议HttpRuntime.Cache
作为分布式缓存的解决方案。从那时起,Microsoft或第三方都没有实现分布式缓存提供程序的实际实现,因此HttpRuntime.Cache
似乎越来越没有意义。
我的理解是否正确?