从Ruby on Rails 4上的磁盘缓存中清除过期的缓存条目

时间:2014-12-16 10:08:42

标签: caching ruby-on-rails-4

我有一个rails应用程序,它使用磁盘缓存来进行现在默认的俄语玩偶缓存。我没有使缓存失效并且我的缓存策略符合我的要求,但是我必须找到一种从磁盘中删除过期条目的正确方法。据记录,磁盘缓存一直在增长,直到它被清除或磁盘已满。

我知道我可以做rake tmp:cache:clear但删除整个缓存,而不仅仅是过时的项目!我正在寻找一种更好的方法,它将保留新的条目,并从磁盘中删除过时的缓存条目。我已经使用shell脚本删除了最后一天没有访问过的条目,但这并不能保证我只删除过时的条目并保留所有新的条目。

我知道我可以切换到memcached或redis,但我不愿意,因为磁盘缓存在没有资源开销和支持另一台服务器(服务器进程方面的服务器,而不是实际硬件)方面做得很好/虚拟机)。

使用磁盘缓存时,如何清除过时的缓存条目?有没有更好的方法然后使用文件'atime / mtime?

1 个答案:

答案 0 :(得分:9)

根据文档,您可以使用#cleanup http://api.rubyonrails.org/classes/ActiveSupport/Cache/FileStore.html#method-i-cleanup

例如,您可以安排一个cron作业在主机上定期运行它 ./script/rails runner -e production' Rails.cache.cleanup'