Rails片段缓存已更新,到期时

时间:2018-08-25 12:31:59

标签: ruby-on-rails redis

我正在测试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缓存一样起作用?

0 个答案:

没有答案