Rails:cache ['store',Product.latest]函数在片段缓存中做了什么?

时间:2015-01-21 13:29:06

标签: ruby-on-rails caching ruby-on-rails-4

我正在关注一本名为使用Rails 4的敏捷Web开发的书,我在理解cache ['store', Product.latest]在视图文件中做了什么时遇到了问题。

#static function latest is defined in the model
def self.latest
  Product.order(:updated_at).last
end

#here is my view file

<% cache['store',Product.latest] do %>
 <% @products.each do|product| %>
  <% cache['entry',product] do %>
     <div class="entry">
      <%= image_tag(product.image_url) %>
      <h3><%= product.title %></h3>
      <%= sanitize(product.description) %>
      <div class="price_line">
       <span class="price"><%= number_to_currency(product.price) %></span>
      </div>
    </div>
  <% end %>
 <% end %>
<% end %>

1 个答案:

答案 0 :(得分:1)

cache(key) { ... } helper执行块的内容,并使用给定的密钥缓存结果一段时间。

文档详细解释了所有各种选项和功能。

在您的情况下,['store',Product.latest]是构建缓存键名称的参数。数组中的项目将被连接以生成类似于String的{​​{1}},然后将其用作存储块结果的缓存键。

store/products/100-20140101-163830作为缓存键的参数传递的原因是确保在将新产品添加到数据库后片段过期的技巧。这种方法通常被称为基于密钥的过期模型。