清除跨工作进程的内存缓存

本文关键字:内存 缓存 进程 工作 清除 | 更新日期: 2023-09-27 18:33:55

我有一个在IIS 7上运行的 ASP.NET MVC应用程序。它被设置为一个网络花园,工作进程的数量与我的处理器数量相匹配。我有时会遇到一些沉重的负载,而这种设置效果最好。

我已经使用System.Web.Cache实现了一些缓存。我偶尔需要使缓存中的某些项目失效,但是我无法清除所有进程中的缓存。

.NET 4 System.Runtime.Caching 功能是否使此操作变得更容易?这是一个类似的问题,但我希望对 .NET 4 有更好的建议。在 IIS Web 服务器上的所有工作进程中刷新 HttpRuntime.Cache 对象

清除跨工作进程的内存缓存

System.Web.Cache和System.Runtime.Caching提供了几乎相同的功能,它只是一个简单的内存缓存,缓存中的项目可以具有过期时间,依赖项等。

如果您想在多台物理机器上运行您的网站,或者在您的情况下将其作为 Web 花园运行,则在任何进程缓存中缓存数据没有多大意义,因为它会再次为每个进程缓存数据。我想这会让内存消耗快速增长......

在这些情况下,分布式缓存系统是最佳选择,因为所有进程都可以利用已缓存的数据...

我使用过 2 个非常流行的内存缓存系统,一个是 memcached,在您的链接中也提到了它。

另一个是应用程序结构缓存,这是如何使用它的一个很好的例子

Memchached是一个"简单"的缓存,它首先不关心安全性和所有这些东西。但是它非常容易实现,并且有很好的.Net客户端,它们使用起来非常简单,几乎与.Net在废话中构建完全相同。

如果您想加密缓存的数据传输并具有所有这些高度安全性,您可能需要使用应用程序结构...