我刚开始在生产应用程序中使用缓存来加快速度。我已经阅读了主要的Rails指南,各种博客,源码本身等等。但就片段缓存而言,我的头仍不清楚一件简单的事情:Rails如何分段缓存工作?
当您在更新对象后销毁缓存时,你只更新单个对象还是该类?我认为只是单一的对象。
下面是一个例子:
<% @jobs.each do |job| %>
<% cache("jobs_index_table_environment_#{session[:merchant_id]}_job_#{job}") do %>
stuff
<% end %>
<% end %>
我在工作的索引页使用上面的代码。每一行呈现了一些信息的用户想要的东西,一些CSS,点击查看个人工作等
我在招聘类写了这个(模型)
after_save do
Rails.cache.delete("jobs_index_table_environment_#{merchant_id}_job_#{self}")
end
after_destroy do
Rails.cache.delete("jobs_index_table_environment_#{merchant_id}_job_#{self}")
end
我要在各个作业对象如果它们被更新或销毁,则从缓存中销毁,当然新创建的作业首次在页面上弹出时会获得自己的缓存关键字。
我不会用@jobs做俄罗斯娃娃的东西,因为这是我的“神”对象,并且一直在变化。缓存几乎不会有帮助,因为该集合可能会在一分钟内变形。
我的理解是正确的,在上面的视图中,如果我把第25页的作业渲染到第一页,我会在缓存中获得25个缓存中的对象,然后如果我只更改第一个,缓存的值将被销毁,下一次加载作业页面时,它将被重新缓存,而另外24个只会从缓存中提取?
如果你阅读你的终端输出,你将会看到“写入片段”或“读取片段”的行。我认为检查出来会帮助你弄清楚你的代码在做什么。 – trosborn