当前位置:编程学习 > C#/ASP.NET >>

如何防止缓存被自动回收?

我有个网站里面有些数据需要长时间缓存在内存里。
最好就是除非网站的DLL文件或者WEB.CONFIG被修改强制了网站重启以外,其他情况缓存都能永久存在。
我发现一段时间内没人访问,缓存会被回收掉。可能是IIS的自动回收应用程序池,或者ASP.NET本身的回收?

我试过很多方式,比如静态类里面的静态变量,在Application_End事件里强制自己访问自己。
但是都没办法阻止我的缓存被回收。

请问有什么好的解决办法么。注意,不能修改IIS设置。因为没有这个权限。 --------------------编程问答-------------------- --------------------编程问答--------------------   一般都会回收!

   不会!

  帮你顶!
        --------------------编程问答-------------------- http://www.techmango.com/blog/article/DotNet/ASP_dot_NET_Cache_Management.htm --------------------编程问答-------------------- 可以使用其他缓存工具,如memcached,将缓存保存在独立的进程里面 --------------------编程问答-------------------- 既然要長久保存 還是村數據庫裡面最好 --------------------编程问答-------------------- 永久存在的缓存是不存在的.
缓存本身就是被GC所控制的,即使你设置了永久不过期,系统在资源紧缺的时候,或者闲置过久,仍旧会按照优先级被回收掉.

楼主的设计是有问题的,有什么东西是必须以缓存形式永久存在的?(除非网站的DLL文件或者WEB.CONFIG被修改强制了网站重启以外).

缓存是可以重复写入的,在过期失效之后重新读取就可以了.不必要拘泥于只能读一次就永久存在了.

除非你用非托管代码去申请内存放置你需要的东西,然后仅在Application_End的时候才释放,否则使用托管资源都是需要受GC控制. --------------------编程问答-------------------- 都会收回的。 --------------------编程问答-------------------- --------------------编程问答-------------------- 这个还真的不好说,如果不想回收,永久存在,我觉得这个不现实啊。 --------------------编程问答-------------------- 放入数据库,放入配置文件。再结合缓存用。 --------------------编程问答--------------------
引用 6 楼 lost_painting 的回复:
永久存在的缓存是不存在的.
缓存本身就是被GC所控制的,即使你设置了永久不过期,系统在资源紧缺的时候,或者闲置过久,仍旧会按照优先级被回收掉.

楼主的设计是有问题的,有什么东西是必须以缓存形式永久存在的?(除非网站的DLL文件或者WEB.CONFIG被修改强制了网站重启以外).

缓存是可以重复写入的,在过期失效之后重新读取就可以了.不必要拘泥于只能读一次就永久存在了.

除非你用……


  顶 --------------------编程问答-------------------- Cache是有时间限制的。超过了服务器设置的过期时间,就会被服务器回收
定义过期策略来决定缓存中的内容,如已经缓存的时间或者收到其他资源的通知 --------------------编程问答--------------------
引用楼主 azure_ceil 的回复:
我有个网站里面有些数据需要长时间缓存在内存里。
最好就是除非网站的DLL文件或者WEB.CONFIG被修改强制了网站重启以外,其他情况缓存都能永久存在。
我发现一段时间内没人访问,缓存会被回收掉。可能是IIS的自动回收应用程序池,或者ASP.NET本身的回收?

我试过很多方式,比如静态类里面的静态变量,在Application_End事件里强制自己访问自己。
但是都没办法阻止我的缓存被……

片面地追求这个有什么意义?
你能将所有的数据都放在内存里?那你还需要数据库吗?
数据库在你眼里是干什么的?
你的数据是永远不变的吗?如果是,那你干脆用静态网页算了。如果不是,你永远保存,数据都变了,你缓存已经过期的数据有什么意义? --------------------编程问答-------------------- 保存在数据库 --------------------编程问答--------------------
引用 13 楼 zhoufoxcn 的回复:
片面地追求这个有什么意义?
你能将所有的数据都放在内存里?那你还需要数据库吗?
数据库在你眼里是干什么的?
你的数据是永远不变的吗?如果是,那你干脆用静态网页算了。如果不是,你永远保存,数据都变了,你缓存已经过期的数据有什么意义?

up........ --------------------编程问答-------------------- 没有了 就在查出来,放到缓存里就OK了

至于你说的,一段时间自动回收的话,我个人觉得是很好的,这样就不必要占用资源 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 13 楼 zhoufoxcn 的回复:
引用楼主 azure_ceil 的回复:
我有个网站里面有些数据需要长时间缓存在内存里。
最好就是除非网站的DLL文件或者WEB.CONFIG被修改强制了网站重启以外,其他情况缓存都能永久存在。
我发现一段时间内没人访问,缓存会被回收掉。可能是IIS的自动回收应用程序池,或者ASP.NET本身的回收?

我试过很多方式,比如静态类里面的静态变量,在Application_End事件里强制……


up --------------------编程问答-------------------- 利用缓存来实现定时任务 http://www.codeproject.com/KB/aspnet/ASPNETService.aspx --------------------编程问答-------------------- 学习…… --------------------编程问答-------------------- 还真没有一直存在
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,