Open hongdong opened 8 years ago
目前不行。 磁盘缓存实现这个功能还是比较容易的,但内存缓存就有问题了。一方面,内存缓存需要做额外检查,会降低性能;另一方面,iOS 里内存缓存应该在收到内存警告时尽可能释放内存,这就和"存活时间"有冲突了。
相似问题:#7
DiskCache 目前有实现 单个缓存的 存活时间 没?
一个 思路 autoTrimInterval 这个 要去掉 几秒清理一次 似乎太耗费了 可以 给设置的对象 额外 包一层 ,取出的时候 判断是否 过期 过期則弃用
不支持存活时间。。这个我觉得会和 ageLimit、LRU 淘汰有冲突。
autoTrimInterval 并不会消耗太多,如果没有达到限制条件的话,这个方法差不多直接返回了。另外,这个参数也可以设置更长一些时间来降低清理频率。但如果去掉这个的话,那 ageLimit、freeDiskSpaceLimit 这两个限额就没法实现了。
Diskcache 不需要lru 淘汰吧
发自我的 iPhone
在 2016年4月6日,18:14,Yaoyuan notifications@github.com 写道:
不支持存活时间。。这个我觉得会和 ageLimit、LRU 淘汰有冲突。
autoTrimInterval 并不会消耗太多,如果没有达到限制条件的话,这个方法差不多直接返回了。另外,这个参数也可以设置更长一些时间来降低清理频率。但如果去掉这个的话,那 ageLimit、freeDiskSpaceLimit 这两个限额就没法实现了。
— You are receiving this because you commented. Reply to this email directly or view it on GitHub
Diskcache 用 LRU 有什么问题吗?
Lru 的思想就是在内存限制的情况下淘汰不常用的缓存,以提高常用缓存的命中率,减少 磁盘\网络io
发自我的 iPhone
在 2016年4月6日,20:00,Yaoyuan notifications@github.com 写道:
Diskcache 用 LRU 有什么问题吗?
— You are receiving this because you commented. Reply to this email directly or view it on GitHub
呃。。iOS 设备的磁盘空间也很有限啊,一个 App 也应该把磁盘缓存保持到一个合适的大小,不能任意增长啊。
嗯,所以磁盘缓存也是需要另外一种 淘汰方案 既要考虑 缓存污染问题 又要 尽可能的减少 iO 的次数
在 2016年4月6日,下午8:43,Yaoyuan notifications@github.com 写道:
呃。。iOS 设备的磁盘空间也很有限啊,一个 App 也应该把磁盘缓存保持到一个合适的大小,不能任意增长啊。
— You are receiving this because you commented. Reply to this email directly or view it on GitHub https://github.com/ibireme/YYCache/issues/21#issuecomment-206352767
那,磁盘缓存有什么好的淘汰算法或方案吗?
这个功能还是很有必要的,先实现磁盘的也可以的。内存那个, 收到内存警告时可以释放内存,取的时候再从磁盘取就是了。
不支持过期时间好麻烦,很多场景都需要,还得自己再封装实现。 实际可以原生支持的,系统内存警告的时候,如果过期时间不到也可以清除,但如果取出缓存的时候过期时间已经到了就直接清楚返回空值。
可不可以在Diskcache层,把item的最后存储时间公布出来,这样可以根据时间来操作item的更新策略。
能单独设置每个缓存的存活时间吗?