Swa*_*wal 5 caching ruby-on-rails
我正在使用我的Rails项目中的缓存,并希望使特定URL的缓存失效.我得到以下命令来过期对应于传递的URL的片段:
ActionController::Base.new.expire_fragment("localhost:3000/users/55-testing-devise/boards/")
Run Code Online (Sandbox Code Playgroud)
我很困惑将这段代码放在我的Rails项目中,以便在添加文本字段中的url并单击expire按钮后立即执行.
您应该考虑采用不同的方法.模型不应该关注缓存是如何工作的,传统上整个清理器方法往往变得复杂,笨拙并且与其余代码不同步.
基本上,您永远不必手动使片段过期.而是在更新模型后更改缓存键/ URL(以便为新版本创建新的缓存条目).
现在的常识是使用俄罗斯娃娃缓存方法.该链接指向一篇解释基础知识的文章,即将推出的Rails 4将包含更好的支持.
这可能是大多数标准Rails应用程序的最佳方式.
这ActionController::Caching::Sweeper是一个很好的方法来做到这一点,它是 Rails 观察者的一部分。
http://api.rubyonrails.org/classes/ActionController/Caching/Sweeping.html
class MyModelSweeper < ActionController::Caching::Sweeper
observe MyModel
def after_save(object)
expire_fragment('...')
end
end
Run Code Online (Sandbox Code Playgroud)