2016-08-18 66 views
0

我有一个非常大的c#网站,它分解为单独的应用程序和单独的应用程序池,运行在同一台服务器上。 (背景)我使用.net 4.6.x框架。 ASP.NET WebForms & MVC。一些应用程序池仍然使用“Classic”,而MVC应用程序使用“Integrated”。跨同一服务器上的多个应用程序池的MemoryCache的单个实例

我想在不同的应用程序中共享某些缓存的项目。我不希望每个应用程序都拥有自己的缓存副本。我只想要一个共享的缓存实例。

这里是我的问题的心脏......

如何在同一台服务器上共享MemeroyCache在所有我的应用程序池的单个实例?如果一个应用程序池将某些内容放入缓存中,我希望能够从其他应用程序/池中检索它。这是可能的还是我需要看看不同的技术。任何示例或建议都会很棒。 :)

预先感谢您!

回答

1

您可以创建一个单独的Web Api项目,并在那里托管您的MemoryCache实现。然后公开一个API,它可以从缓存中获取/设置所有应用程序可以使用的项目。

虽然,这种方法有一些注意事项。例如,如果您使用MemoryCache.Default,则只要您的应用程序池存活,您的缓存就会一直存在 - 默认的应用程序池空闲超时时间为20分钟,小于1小时。我得到的是,我认为你将不得不保持大量的应用程序池设置同步,我相信这会导致问题。

更好的方法是实现分布式缓存。我建议使用RedisStackExchange.Redis客户端。还有其他的选择,如memcached

+0

是的,我实际上正在考虑web API方法。出于某种原因,我认为MemoryCache会在应用程序池回收后停留。如你所说,我认为更好的方法是像Redis这样的分布式缓存。谢谢你的回应! – Zooly57

相关问题