我正在测试Rails中的片段缓存
在导轨中查看这条线:
“如果updated_at的值已更改,将生成一个新密钥。Rails将向该密钥写入一个新的缓存,并且写入该旧密钥的旧缓存将不再使用。这称为密钥-基于有效期。”
https://guides.rubyonrails.org/caching_with_rails.html#fragment-caching
我想如果我使用Rails控制台更新资源,则该资源的缓存将过期并生成新密钥,这是我的代码。
控制器:
class WidgetsController < ApplicationController
def show_widg
@widget = Widget.last
end
end
视图:
<h1>Widget</h1>
<% cache @widget do %>
<%= @widget.name %>
<br>
<%= @widget.description %>
<br>
<br>
<% end %>
<h2>I changed</h2>
我第一次运行此代码时,条目被缓存。
然后我进入rails控制台并手动更新记录,该记录确实带有时间戳。
widg = Widget.last
widg.description = "asdsda"
widg.save!
=> #<Widget id: 21, name: "testing again", description: "asdsda", created_at: "2018-08-25 12:01:21", updated_at: "2018-08-25 12:08:51">
然后我重新渲染页面,认为缓存将过期,但是我仍然看到上一个条目。
这是为什么?以及update_at密钥到期如何工作?我正在使用Redis,这对Redis是否会和Rails缓存一样起作用?