System.Web.HttpRuntime.Cache中的值为什么会不一样

我将数据存入System.Web.HttpRuntime.Cache中,修改数据时做remove操作,在读cache时如果没有就做insert。

但是我在前台读出的cache数据中的内容时,
不停的刷新页面,内容一会是修改前的一会儿是修改后的。。

这是什么问题啊?

/*******************/
原来是IIS设置了多个进程。

那么在怎么清除多个进程中的缓存信息呢?

阅读 4.9k
1 个回答

根据您的问题描述,你应该是使用的IIS Web Garden模式,且工作进程(Worker Process)大于1。在这种情况下,可能存在多个worker process并存,所以你的remove和insert会发生在不同的进程内,而HttpRuntime.Cache是属于进程内的内存,不能实现进程间共享。

可能的解决方案是:1.设置IIS的Web Garden的worker process是1,这样同一时间只会有1个proces在运行。但这可能带来性能的损失。 2. 使用分布式缓存程序如memcached, redis等等。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进