我们在一个网站中使用了文件依赖缓存,具体添加缓存的代码如下,一般情况下一切正常。
但我们发现在一台机器上资源较紧张时,刚插入缓存的数据,在很短的时间内再去查,就已经不存在了,这里确定所依赖的文件是没有任何变更的,所以不会是文件变更引起缓存失效。
从目前的现象来看,很有可能是由于内存吃紧,导致内存回收,同时将缓存也回收了。
我们插入缓存的代码示例如下:
System.Web.HttpRuntime.Cache.Insert(Key, blRet, new System.Web.Caching.CacheDependency(strPath), System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, null);
在此想问一下,这个缓存具体是在哪些情况下会失效? 如何避免这种情况的发生?
现在的关键问题是:当我把服务器上其他一些吃内存的进程关闭后,网站中的缓存依旧在插入后就会失效,这就让我怀疑并不完全是内存吃紧导致回收引起;必需要重启IIS进程后才会正常。
哪位有相关经验的,多指点下。