Rails: 缓存['store', Product.latest]函数在片段缓存中有什么作用?
Rails: what does cache['store', Product.latest] function do in fragment cache?
我正在关注一本名为 Agile Web Development With Rails 4 的书,我在理解 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 %>
cache(key) { ... }
helper 执行块的内容,并使用给定的键将结果缓存一定时间。
文档详细解释了所有各种选项和功能。
在您的例子中,['store',Product.latest]
是构建缓存键名称的参数。连接数组中的项目以生成类似于 store/products/100-20140101-163830
的 String
,然后将其用作缓存键来存储块的结果。
之所以将 Product.latest
作为缓存键的参数传递,是为了确保片段在新产品添加到数据库后立即过期。这种方法通常称为基于密钥的过期模型。
我正在关注一本名为 Agile Web Development With Rails 4 的书,我在理解 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 %>
cache(key) { ... }
helper 执行块的内容,并使用给定的键将结果缓存一定时间。
文档详细解释了所有各种选项和功能。
在您的例子中,['store',Product.latest]
是构建缓存键名称的参数。连接数组中的项目以生成类似于 store/products/100-20140101-163830
的 String
,然后将其用作缓存键来存储块的结果。
之所以将 Product.latest
作为缓存键的参数传递,是为了确保片段在新产品添加到数据库后立即过期。这种方法通常称为基于密钥的过期模型。