Rails 4 Http缓存(如何在模板中更改时使缓存失效)

时间:2015-01-13 14:06:22

标签: ruby-on-rails ruby-on-rails-4 etag http-caching

我已经阅读了几个关于HTTP缓存的博客,并尝试在我的rails应用程序中实现它并且它正常工作。但问题是,每当我直接修改我的模板文件(index.erb文件),然后这些更改没有出现在浏览器上,服务器给我回304没有修改响应。如果我从数据库编辑我的任何用户然后只有那些更改正在网页上显示。

所以我只想知道在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

1 个答案:

答案 0 :(得分:1)

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

通过使用已部署应用程序(或其他一些SCM密钥)的git SHA,可以自动完成整个任务。所以在每次部署时,你都在破坏缓存。这种方法简单易用。

相关问题