我有以下问题:我想在Redis中缓存操作的结果。出于这个原因,我使用https://github.com/jodosha/redis-rack-cache。 Rack :: Cache应该缓存一个动作的事实是通过在Rails中设置适当的HTTP头信息来确定的,例如:
response.headers['Cache-Control'] = 'max-age=3600, public, must-revalidate'
现在,Rack :: Cache将正确缓存Redis中的响应。但是,此标头还告诉浏览器缓存响应,我不想要的!该请求应该仅在服务器端缓存。
作为一种解决方法,我正在替换nginx中的标头,我将其用作反向代理,但必须有更优雅的方式。有人知道怎么做吗?
祝你好运, 马丁
答案 0 :(得分:1)
一种选择是编写位于Rack :: Cache之上的自己的中间件,然后从响应中删除这些Cache-Control标头。
简单的事情:
def call(env)
status, headers, body = @app.call(env)
headers.delete("Cache-Control")
[status, headers, body]
end
可以作为中间件。