Rails中基于文件的缓存的文档说:
请注意,除非定期清除旧条目,否则该高速缓存将一直增长到磁盘满为止。
不幸的是,它没有给予任何关于如何定期清除旧条目的信息。为:expires_in
设置一个适当的值是否可以完成这项工作,或者在清除该高速缓存的背后是否有其他某种黑魔法?
此外,文档提供了一个选项来限制基于内存的缓存的大小:
config.cache_store = :memory_store, { size: 64.megabytes }
字符串
这也适用于基于文件的缓存吗?更重要的是,当该高速缓存增长到低于该大小限制时会发生什么?它会删除旧的缓存值还是会抛出某种异常?
谢谢你,Danijoo
3条答案
按热度按时间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分钟轻松做一个快速测试。
m4pnthwp2#
:expires_in
的值将完成这项工作。当达到这个限制时,将不再缓存任何内容,也不会抛出任何异常。
wmtdaxz33#
size
选项适用于MemoryStore
缓存,但不适用于FileStore
缓存。检查FileStore
的源代码,您将观察到FileStore不支持size
选项,这与MemoryStore不同。FileStore
缓存条目将过期(被删除),并在读取时重新创建,但没有显式删除未使用的过期条目,因此该高速缓存将无限增长。如果您想定期清理过期条目,可以显式运行Rails.cache.cleanup
。