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 密钥)自动执行整个任务。所以在每次部署时,你都在破坏缓存。该方法简单且易于调试。
我已经阅读了几篇关于 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 密钥)自动执行整个任务。所以在每次部署时,你都在破坏缓存。该方法简单且易于调试。