0

我想在 Rails 视图中测试缓存过期。视图如下所示:

# products/index.html.erb
<% @products.each do |product| %>
  <% cache product do %>
    <%= render product %>
  <% end %>
<% end %>

产品的部分呈现链接到产品的所有者、项目、类别、标签等。每次更新产品或链接到它的对象时,我都会使产品的缓存过期

有几种方法可以测试产品的缓存过期:

  1. 模型规格:在更新产品或链接对象时测试产品cache_version是否正在更改
  2. 查看规范:测试新属性是否在产品的索引模板中呈现
  3. 请求规范:测试响应正文中是否返回了新属性

cache_version产品模型如下所示:

def cache_version
  [touched_at, updated_at].compact.map(&:utc).max.to_s(:usec)
end

问题#1是有人可以更改产品部分,因此它不会使用cache_version方法。例如,从 rails 升级5.15.2缓存机制后已更改为使用cache_version而不是cache_key

如果有人变了怎么办

你会选择哪种方式来测试缓存过期,为什么?

4

0 回答 0