最好就是除非网站的DLL文件或者WEB.CONFIG被修改强制了网站重启以外,其他情况缓存都能永久存在。
我发现一段时间内没人访问,缓存会被回收掉。可能是IIS的自动回收应用程序池,或者ASP.NET本身的回收?
我试过很多方式,比如静态类里面的静态变量,在Application_End事件里强制自己访问自己。
但是都没办法阻止我的缓存被回收。
请问有什么好的解决办法么。注意,不能修改IIS设置。因为没有这个权限。
21 个解决方案
#1
#2
一般都会回收!
不会!
帮你顶!
不会!
帮你顶!
#4
可以使用其他缓存工具,如memcached,将缓存保存在独立的进程里面
#5
既然要長久保存 還是村數據庫裡面最好
#6
永久存在的缓存是不存在的.
缓存本身就是被GC所控制的,即使你设置了永久不过期,系统在资源紧缺的时候,或者闲置过久,仍旧会按照优先级被回收掉.
楼主的设计是有问题的,有什么东西是必须以缓存形式永久存在的?(除非网站的DLL文件或者WEB.CONFIG被修改强制了网站重启以外).
缓存是可以重复写入的,在过期失效之后重新读取就可以了.不必要拘泥于只能读一次就永久存在了.
除非你用非托管代码去申请内存放置你需要的东西,然后仅在Application_End的时候才释放,否则使用托管资源都是需要受GC控制.
缓存本身就是被GC所控制的,即使你设置了永久不过期,系统在资源紧缺的时候,或者闲置过久,仍旧会按照优先级被回收掉.
楼主的设计是有问题的,有什么东西是必须以缓存形式永久存在的?(除非网站的DLL文件或者WEB.CONFIG被修改强制了网站重启以外).
缓存是可以重复写入的,在过期失效之后重新读取就可以了.不必要拘泥于只能读一次就永久存在了.
除非你用非托管代码去申请内存放置你需要的东西,然后仅在Application_End的时候才释放,否则使用托管资源都是需要受GC控制.
#7
都会收回的。
#8
Application_End
你应该采取一个线程自己访问自己,而不是在Application_End事件里访问自己
#9
这个还真的不好说,如果不想回收,永久存在,我觉得这个不现实啊。
#10
放入数据库,放入配置文件。再结合缓存用。
#11
顶
#12
Cache是有时间限制的。超过了服务器设置的过期时间,就会被服务器回收
定义过期策略来决定缓存中的内容,如已经缓存的时间或者收到其他资源的通知
定义过期策略来决定缓存中的内容,如已经缓存的时间或者收到其他资源的通知
#13
片面地追求这个有什么意义?
你能将所有的数据都放在内存里?那你还需要数据库吗?
数据库在你眼里是干什么的?
你的数据是永远不变的吗?如果是,那你干脆用静态网页算了。如果不是,你永远保存,数据都变了,你缓存已经过期的数据有什么意义?
#14
保存在数据库
#15
up........
#16
没有了 就在查出来,放到缓存里就OK了
至于你说的,一段时间自动回收的话,我个人觉得是很好的,这样就不必要占用资源
至于你说的,一段时间自动回收的话,我个人觉得是很好的,这样就不必要占用资源
#17
#18
up
#19
利用缓存来实现定时任务 http://www.codeproject.com/KB/aspnet/ASPNETService.aspx
#20
学习……
#21
还真没有一直存在
#1
#2
一般都会回收!
不会!
帮你顶!
不会!
帮你顶!
#3
#4
可以使用其他缓存工具,如memcached,将缓存保存在独立的进程里面
#5
既然要長久保存 還是村數據庫裡面最好
#6
永久存在的缓存是不存在的.
缓存本身就是被GC所控制的,即使你设置了永久不过期,系统在资源紧缺的时候,或者闲置过久,仍旧会按照优先级被回收掉.
楼主的设计是有问题的,有什么东西是必须以缓存形式永久存在的?(除非网站的DLL文件或者WEB.CONFIG被修改强制了网站重启以外).
缓存是可以重复写入的,在过期失效之后重新读取就可以了.不必要拘泥于只能读一次就永久存在了.
除非你用非托管代码去申请内存放置你需要的东西,然后仅在Application_End的时候才释放,否则使用托管资源都是需要受GC控制.
缓存本身就是被GC所控制的,即使你设置了永久不过期,系统在资源紧缺的时候,或者闲置过久,仍旧会按照优先级被回收掉.
楼主的设计是有问题的,有什么东西是必须以缓存形式永久存在的?(除非网站的DLL文件或者WEB.CONFIG被修改强制了网站重启以外).
缓存是可以重复写入的,在过期失效之后重新读取就可以了.不必要拘泥于只能读一次就永久存在了.
除非你用非托管代码去申请内存放置你需要的东西,然后仅在Application_End的时候才释放,否则使用托管资源都是需要受GC控制.
#7
都会收回的。
#8
Application_End
你应该采取一个线程自己访问自己,而不是在Application_End事件里访问自己
#9
这个还真的不好说,如果不想回收,永久存在,我觉得这个不现实啊。
#10
放入数据库,放入配置文件。再结合缓存用。
#11
顶
#12
Cache是有时间限制的。超过了服务器设置的过期时间,就会被服务器回收
定义过期策略来决定缓存中的内容,如已经缓存的时间或者收到其他资源的通知
定义过期策略来决定缓存中的内容,如已经缓存的时间或者收到其他资源的通知
#13
片面地追求这个有什么意义?
你能将所有的数据都放在内存里?那你还需要数据库吗?
数据库在你眼里是干什么的?
你的数据是永远不变的吗?如果是,那你干脆用静态网页算了。如果不是,你永远保存,数据都变了,你缓存已经过期的数据有什么意义?
#14
保存在数据库
#15
up........
#16
没有了 就在查出来,放到缓存里就OK了
至于你说的,一段时间自动回收的话,我个人觉得是很好的,这样就不必要占用资源
至于你说的,一段时间自动回收的话,我个人觉得是很好的,这样就不必要占用资源
#17
#18
up
#19
利用缓存来实现定时任务 http://www.codeproject.com/KB/aspnet/ASPNETService.aspx
#20
学习……
#21
还真没有一直存在