【问题标题】:Rails 4 Http caching (how to expire cache when change in template)Rails 4 Http缓存(模板更改时如何使缓存过期)
【发布时间】:2015-03-11 12:26:27
【问题描述】:

我已经阅读了几篇关于 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

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 2014-07-03
    • 2012-02-09
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    相关资源
    最近更新 更多