System.Web.HttpRuntime.Cache缓存失效问题

大蓝头 2013-09-28 09:12:37
我们在一个网站中使用了文件依赖缓存,具体添加缓存的代码如下,一般情况下一切正常。
但我们发现在一台机器上资源较紧张时,刚插入缓存的数据,在很短的时间内再去查,就已经不存在了,这里确定所依赖的文件是没有任何变更的,所以不会是文件变更引起缓存失效。
从目前的现象来看,很有可能是由于内存吃紧,导致内存回收,同时将缓存也回收了。
我们插入缓存的代码示例如下:

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进程后才会正常。

哪位有相关经验的,多指点下。
...全文
666 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Andy__Huang 2013-10-17
  • 打赏
  • 举报
回复
觉得你这样用缓存不是自己想用的缓存.缓存是写在静态类里面,执行一次,只要不关程序就永久留在内存
赢友网络 2013-10-17
  • 打赏
  • 举报
回复
Cache.Insert("uName", sbHtml, null, DateTime.Now.AddSeconds(35), System.Web.Caching.Cache.NoSlidingExpiration);
大蓝头 2013-10-17
  • 打赏
  • 举报
回复
这个问题很奇怪,后来我们换操作系统后,这个问题消失了。。。
  • 打赏
  • 举报
回复
楼主用高速缓存为了实现什么
  • 打赏
  • 举报
回复
引用 楼主 TragicGuy 的回复:
我们在一个网站中使用了文件依赖缓存,具体添加缓存的代码如下,一般情况下一切正常。 但我们发现在一台机器上资源较紧张时,刚插入缓存的数据,在很短的时间内再去查,就已经不存在了,这里确定所依赖的文件是没有任何变更的,所以不会是文件变更引起缓存失效。 从目前的现象来看,很有可能是由于内存吃紧,导致内存回收,同时将缓存也回收了。 我们插入缓存的代码示例如下:

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进程后才会正常。 哪位有相关经验的,多指点下。
如果你在asp.net中使用(而不是桌面或者windows service等的进程中),那么它会随着asp.net进程自己重启而丢失。实际上不仅缓存全都没了,所有的静态变量值等等的也都没了。 你测试一下,看看是不是asp.net进程重启。
  • 打赏
  • 举报
回复
谁说IIS重启了?
大蓝头 2013-09-28
  • 打赏
  • 举报
回复
再补充一下,我们这个只是用于缓存一些常用到的数据,当数据库数据变更时,会解决其依赖的文件变更,以达到能与数据库同步的目的 。 不会用来缓存相关的文件等信息。
大蓝头 2013-09-28
  • 打赏
  • 举报
回复
谢谢关注,首先,确定IIS是没有重启的,只是他的内存在上升,我们的是小应用,只有几个G的内存,也只是给网站自己用的,不是作为分布式缓存在用[这个也只支持进程内的缓存],确定是内存太小了? 有没有关于这种缓存机制的详细的资料?
c02645 2013-09-28
  • 打赏
  • 举报
回复
一般人家作文件缓存服务器内存都很大,几百G以上的
c02645 2013-09-28
  • 打赏
  • 举报
回复
你的服务器内存有多少G啊,有100来G吗?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧