我是否:
head 302
或
head 307
或
redirect_to
调用相同的控制器操作
response.headers['Cache-Control'] = "public, max-age=86400"
没有效果。 Rails发送:
Cache-Control: no-cache
无论如何。我需要发送Cache-Control标头来指示边缘缓存为重定向服务一天。这可能吗?
答案 0 :(得分:12)
您不能将Cache-Control直接设置到标头中(不再?),因为您需要修改response.cache_control对象(因为它将用于稍后设置Cache-Control标头)。
幸运的是,expires_in方法会为您解决这个问题:
expires_in 1.day, :public => true
在此处查看更多信息: http://apidock.com/rails/ActionController/ConditionalGet/expires_in
答案 1 :(得分:1)
尝试使用此代替
response.headers['Cache-Control'] = 'public, max-age=300'
并确保您处于生产模式。 Rails不会在开发中缓存。
答案 2 :(得分:1)
使用Rails 5,你可以做到
response.cache_control = 'public, max-age=86400'
答案 3 :(得分:0)
. I need to send the Cache-Control header to instruct an edge cache to serve the redirect for a day.
这怎么可能?在临时重定向的情况下,浏览器将始终尝试获取原始URL,并且在重定向时,他们将尝试其他URL,如果缓存在代理上,则可以从那里提供。 但是浏览器仍然会首次与您的服务器联系。