【发布时间】:2016-07-20 01:54:10
【问题描述】:
我有一个 rails 4 应用程序。我必须以某种方式区分不同的缓存键,但不知道命名约定。
第一个例子:
我有一个带有index、completed_tasks 和incoming_tasks 操作的任务模型。由于分页,A 具有相同的实例名称 (@tasks)。
目前缓存键的名称如下所示。我的问题: 1. 缓存键结构是否足够好? 2. 我将键的各个部分放入数组中的顺序是否重要?比如[@tasks.map(&:id), @tasks.map(&:updated_at).max, 'completed-tasks']比['completed-tasks', @tasks.map(&:id), @tasks.map(&:updated_at).max]好?
completed_tasks.html.erb
<% cache([@tasks.map(&:id), @tasks.map(&:updated_at).max, 'completed-tasks']) do %>
<%= render @tasks %>
<% end %>
tasks.html.erb
<% cache([@tasks.map(&:id), @tasks.map(&:updated_at).max]) do %>
<%= render @tasks %>
<% end %>
incoming_tasks.html.erb
<% cache([@tasks.map(&:id), @tasks.map(&:updated_at).max, 'incoming-tasks']) do %>
<%= render @tasks %>
<% end %>
第二个例子:
我也对russian-doll-caching 的命名约定有疑问:
products/index.html.erb
<% cache([@products.map(&:id), @products.map(&:updated_at).max]) do %>
<%= render @products %>
<% end %>
_product.html.erb
<% cache(product) do %>
<%= product.name %>
....
<% end %>
这个版本是否足够好,或者我总是应该在外部和内部缓存键数组中放置一些字符串,以避免其他页面上类似命名的缓存键出现问题。例如,我计划将<% cache(@product) do %> 放在profile#show 页面上,这与我的示例中的内部缓存完全相同。如果键必须不同,rails 约定将内部缓存键命名为外部缓存键是什么?
【问题讨论】:
标签: ruby-on-rails caching fragment-caching