ruby Rails:控制文件存储缓存大小

ghg1uchk  于 5个月前  发布在  Ruby
关注(0)|答案(3)|浏览(45)

Rails中基于文件的缓存的文档说:
请注意,除非定期清除旧条目,否则该高速缓存将一直增长到磁盘满为止。
不幸的是,它没有给予任何关于如何定期清除旧条目的信息。为:expires_in设置一个适当的值是否可以完成这项工作,或者在清除该高速缓存的背后是否有其他某种黑魔法?
此外,文档提供了一个选项来限制基于内存的缓存的大小:

config.cache_store = :memory_store, { size: 64.megabytes }

字符串
这也适用于基于文件的缓存吗?更重要的是,当该高速缓存增长到低于该大小限制时会发生什么?它会删除旧的缓存值还是会抛出某种异常?
谢谢你,Danijoo

yxyvkwin

yxyvkwin1#

在对FileStore缓存进行实验时,我发现:expires_in选项可以工作,但:size选项不能。
如果你想指定选项,那么你还需要指定路径,尝试下面的例子:
config.cache_store =:file_store,Rails.root.join('tmp','cache'),{ expires_in:1.minute }
将代码放入config/application.rb中,并记住激活config/environments/development.rb中的该高速缓存并重新启动应用程序。
P.S.我用1分钟轻松做一个快速测试。

m4pnthwp

m4pnthwp2#

  • 是的 * 限制也适用于基于文件的缓存。* 是的 * :expires_in的值将完成这项工作。

当达到这个限制时,将不再缓存任何内容,也不会抛出任何异常。

wmtdaxz3

wmtdaxz33#

size选项适用于MemoryStore缓存,但不适用于FileStore缓存。检查FileStore的源代码,您将观察到FileStore不支持size选项,这与MemoryStore不同。
FileStore缓存条目将过期(被删除),并在读取时重新创建,但没有显式删除未使用的过期条目,因此该高速缓存将无限增长。如果您想定期清理过期条目,可以显式运行Rails.cache.cleanup

相关问题