Rails: 有条件地绕过片段缓存
Rails: Conditionally bypass fragment caching
有什么方法可以使片段缓存有条件,例如这将始终缓存:
<% cache :calculation do %>
<%= calc(x) %>
<% end %>
但是如果例如x > 5
,类似于:
<% cache :calculation, { if: (x > 5) } do %>
<%= calc(x) %>
<% end %>
当然也可以通过if-then语句,提取缓存内容函数来完成,但那样比较麻烦。可能通过在这种情况下将 ttl 设置为零来工作,但我怀疑这仍然会将项目放入缓存中,这被浪费了 space.
你试过了吗cache_if
<% cache_if((x > 5), :calculation) do %>
<%= calc(x) %>
<% end %>
有什么方法可以使片段缓存有条件,例如这将始终缓存:
<% cache :calculation do %>
<%= calc(x) %>
<% end %>
但是如果例如x > 5
,类似于:
<% cache :calculation, { if: (x > 5) } do %>
<%= calc(x) %>
<% end %>
当然也可以通过if-then语句,提取缓存内容函数来完成,但那样比较麻烦。可能通过在这种情况下将 ttl 设置为零来工作,但我怀疑这仍然会将项目放入缓存中,这被浪费了 space.
你试过了吗cache_if
<% cache_if((x > 5), :calculation) do %>
<%= calc(x) %>
<% end %>