4

我的 ASP.NET 应用程序将一些昂贵的(加载)数据存储在应用程序可访问的static字段中(System.Web.Caching.Cache在这种情况下使用不合适)。

我的应用程序还通过另一台机器上的中央 SQL Server 跨几个网络服务器进行负载平衡。

有时此缓存会失效。如果用户提交了一些更新的数据,Server01那么该应用程序知道它可以在将数据提交到数据库时清除其本地缓存。

但是,如何Server01通知Server02此更改 soServer02的缓存将失效?

我不知道 ASP.NET 中有任何内置的服务器间 IPC 用于 web-farm 通信,看来我必须在应用程序中创建一个 URI 处理程序(例如http://mysite/InvalidateCache),该处理程序将由其他服务器调用,但这似乎有点骇人听闻。有没有更好的办法?

4

2 回答 2

3

我有一点脑子放屁,并意识到网络服务器可以通过相互发送请求来相互通信——不需要特殊的侧通道线路。我之前把这个想法称为hackish,但理论上它是合理的。

显然出于安全目的,这些请求需要通过物理专用网络连接,或者具有加密签名的请求,但我现在真的想不出这种方法有什么问题。

于 2013-03-25T08:39:36.280 回答
1

我建议您探索像 AppFabric 这样的分布式缓存。http://msdn.microsoft.com/en-us/library/ff383731(v=azure.10).aspx

于 2013-03-17T04:28:59.517 回答