【问题标题】:Clearing expired cache entries from disk cache on Ruby on Rails 4从 Ruby on Rails 4 上的磁盘缓存中清除过期的缓存条目
【发布时间】:2015-02-14 14:43:46
【问题描述】:

我有一个 Rails 应用程序,它使用磁盘缓存来进行现在默认的俄罗斯娃娃缓存。我在使缓存无效方面没有任何问题,而且我的缓存策略正在满足我的要求,但是我必须找到一种正确的方法来从磁盘中删除过期的条目。如文档所述,磁盘缓存会不断增长,直到它被清除或磁盘已满。

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

我知道我可以切换到 memcached 或 redis,但我不希望这样做,因为磁盘缓存做得很好,没有资源开销并支持另一台服务器(服务器就服务器进程而言,而不是实际硬件/虚拟机)。

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

【问题讨论】:

    标签: caching ruby-on-rails-4


    【解决方案1】:

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

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

    【讨论】:

    • 奇怪的是他们在文档中说Preemptively,这是否意味着它应该自己运行?
    猜你喜欢
    • 2016-01-29
    • 2023-03-03
    • 2022-12-20
    • 2016-06-25
    • 2013-12-05
    • 2023-03-15
    • 1970-01-01
    • 2012-03-22
    • 2019-07-26
    相关资源
    最近更新 更多