Rails 4 Http 缓存(如何在模板更改时使缓存过期)

Rails 4 Http caching (how to expire cache when change in template)

我已经阅读了几篇关于 HTTP 缓存的博客,并尝试在我的 rails 应用程序中实现它并使其正常工作。但问题是,每当我直接修改我的模板文件(index.erb 文件)时,这些更改不会出现在浏览器上,服务器会返回 304 not modified response.if 我编辑我的任何用户来自数据库然后只有那些更改会出现在网页上。

所以我只想知道是否有任何方法可以使缓存过期并在 http 缓存中的模板文件发生更改时向用户发送 200 响应。

class UsersController < ApplicationController
  before_action :set_user, only: [:show, :edit, :update, :destroy]

  # GET /users
  # GET /users.json
  def index
    @users = User.all
    fresh_when etag: @users
  end
end

conditional get rails 中的 etag 支持非常简单。它根据您传入的原因计算 etag。因此,如果您有某种在更改模板时增加的计数器,则缓存密钥已过期,浏览器将请求新版本。

可以使用已部署应用程序的 git SHA(或其他一些 SCM 密钥)自动执行整个任务。所以在每次部署时,你都在破坏缓存。该方法简单且易于调试。