我有一个在IIS 7上运行的ASP.NET MVC应用程序。它设置为Web园,工作进程数与我的处理器数相匹配。我有时会经历一些重负荷,这种设置效果最好。
我使用System.Web.Cache实现了一些缓存。我偶尔需要使缓存中的某些项无效,但是我无法清除所有进程中的缓存。
.NET 4 System.Runtime.Caching功能是否使这更容易?这是一个类似的问题,但我希望有更好的建议与.NET 4。 Flush HttpRuntime.Cache objects across all worker processes on IIS webserver
答案 0 :(得分:1)
System.Web.Cache和System.Runtime.Caching提供了几乎相同的功能,它只是一个简单的内存缓存,其中缓存中的项目可以具有到期时间,依赖性等...
如果您想在多台物理计算机上运行您的站点,或者在您的情况下将其作为Web园运行,则在任何进程内缓存中缓存数据都没有多大意义,因为它会再次为每个进程缓存它。这会让内存消耗增长得相当快我猜...
在这些情况下,分布式缓存系统是最佳选择,因为所有进程都可以利用已经缓存的数据......
我使用了2个非常受欢迎的分布式内存缓存系统,其中一个是 memcached ,您的链接中也提到了这一点。
另一个是如何使用它的app fabric cache,here is a good example
Memchached是一个“简单”的缓存,它首先不关心安全性和所有这些东西。但它很容易实现,并且有很好的.Net clients,它们使用起来非常简单,几乎与.Net构建的垃圾一样。
如果您想加密缓存的数据传输并保证所有这些安全,那么您可能希望使用app fabric ......