覆盖重定向上的rails Cache-Control标头

时间:2011-06-03 22:36:43

标签: ruby-on-rails caching cdn amazon-cloudfront

我是否:

head 302

head 307

redirect_to

调用相同的控制器操作

response.headers['Cache-Control'] = "public, max-age=86400"

没有效果。 Rails发送:

Cache-Control: no-cache

无论如何。我需要发送Cache-Control标头来指示边缘缓存为重定向服务一天。这可能吗?

4 个答案:

答案 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,如果缓存在代理上,则可以从那里提供。 但是浏览器仍然会首次与您的服务器联系。