Rails中的缓存
最近学习Rails。
看到如下代码:
<% if notice %> <p id="notice"><%= notice %></p> <% end %> <h1>Your Pragmatic Catalog</h1> <!-- START_HIGHLIGHT --> <% cache ['store', Product.latest] do %> <!-- END_HIGHLIGHT --> <% @products.each do |product| %> <!-- START_HIGHLIGHT --> <% cache ['entry', product] do %> <!-- END_HIGHLIGHT --> <div class="entry"> <%= image_tag(product.image_url) %> <h3><%= product.title %></h3> <%= sanitize(product.description) %> <div class="price_line"> <!-- START:currency --> <span class="price"><%= number_to_currency(product.price) %></span> <!-- END:currency --> </div> </div> <!-- START_HIGHLIGHT --> <% end %> <!-- END_HIGHLIGHT --> <% end %> <!-- START_HIGHLIGHT --> <% end %> <!-- END_HIGHLIGHT -->
对其中<% cache ['store', Product.latest] do %>不是很明白。研究后有如下发现:
1、配置
配置 : /config/environments/development.rb
config.action_controller.perform_caching = true #开发环境下启动缓存
2、定义
File : lib/ruby/gems/2.0.0/gems/actionpack-4.0.3/lib/action_view/helpers/cache_helper.rb
Module : ActionView::Helpers::CacheHelper
Type: Instance Public methods
3、应用
When using this method, you list the cache dependency as the name of the cache, like so:
<% cache project do %> <b>All the topics on this project</b> <%= render project.topics %> <% end %>
views/projects/123-20120806214154/7a1156131a6928cb0026877f8b749ac9
^class ^id ^updated_at ^template tree digest
If your template cache depends on multiple sources (try to avoid this to keep things simple),
you can name all these dependencies as part of an array:
<% cache [ project, current_user ] do %> <b>All the topics on this project</b> <%= render project.topics %> <% end %>