我有个网站里面有些数据需要长时间缓存在内存里。
最好就是除非网站的DLL文件或者WEB.CONFIG被修改强制了网站重启以外,其他情况缓存都能永久存在。
我发现一段时间内没人访问,缓存会被回收掉。可能是IIS的自动回收应用程序池,或者ASP.NET本身的回收?我试过很多方式,比如静态类里面的静态变量,在Application_End事件里强制自己访问自己。
但是都没办法阻止我的缓存被回收。请问有什么好的解决办法么。注意,不能修改IIS设置。因为没有这个权限。
最好就是除非网站的DLL文件或者WEB.CONFIG被修改强制了网站重启以外,其他情况缓存都能永久存在。
我发现一段时间内没人访问,缓存会被回收掉。可能是IIS的自动回收应用程序池,或者ASP.NET本身的回收?我试过很多方式,比如静态类里面的静态变量,在Application_End事件里强制自己访问自己。
但是都没办法阻止我的缓存被回收。请问有什么好的解决办法么。注意,不能修改IIS设置。因为没有这个权限。
缓存本身就是被GC所控制的,即使你设置了永久不过期,系统在资源紧缺的时候,或者闲置过久,仍旧会按照优先级被回收掉.楼主的设计是有问题的,有什么东西是必须以缓存形式永久存在的?(除非网站的DLL文件或者WEB.CONFIG被修改强制了网站重启以外).缓存是可以重复写入的,在过期失效之后重新读取就可以了.不必要拘泥于只能读一次就永久存在了.除非你用非托管代码去申请内存放置你需要的东西,然后仅在Application_End的时候才释放,否则使用托管资源都是需要受GC控制.
定义过期策略来决定缓存中的内容,如已经缓存的时间或者收到其他资源的通知