我正在努力解决有关在单个 Web 服务器(IIS 8 / Windows Server 2012)上跨多个 Web 应用程序访问单个缓存的情况。
目前我们有一台内存为 16GB 的服务器,它只运行一个站点。为了争论,假设这个网站自己消耗了 10GB 的内存(我知道很多)
它将所有内容存储在 中System.Web.HttpRuntime.Cache
,检索速度非常快。一个典型的场景是从这个缓存中检索 10,000 个对象,这可以在几毫秒内完成。
当我想向这个服务器添加另一个 Web 应用程序时,它变得很棘手,它与服务器上运行的另一个站点 99.9% 相同,并且理想情况下想要访问这个站点中的所有内容,快速 HttpRuntime.Cache。
我看到的问题是,据我所知,这个 HttpRuntime.Cache 不能在应用程序之间共享。
我尝试过 AppFabric、Redis 和 NCache,所有分布式缓存代理,它们检索相同 10,000 个对象的绝对最快时间约为 2 秒,这对于按需网站来说并不好。(顺便说一句,我很确定这 2 秒中有 1.999 秒充满了反序列化,这也是 CPU 密集型的)
我是否遗漏了一些明显的东西......一台服务器上的两个 Web 应用程序访问不需要昂贵的序列化/反序列化的缓存的方法?或者是时候为新的网络服务器分叉了。