设置Cache-Control标头作为响应

时间:2015-03-10 14:28:15

标签: ruby-on-rails caching

我将Rails(v3.2.21)用于API应用程序并尝试设置" Cache-Control"我的回复中的标题,以便我的客户端应用可以缓存它们。但是,实际响应中的标头值仍使用默认值(使用Chrome中的Advanced Rest Client插件进行检查)。

从Googlage,似乎expires_in方法是这样做的方法:

expires_in 3.hours, :public => true

但是,当我向资源发出请求时,它总是返回(默认值?):

Cache-Control: must-revalidate, no-cache, no-store, private, max-age=0

当我在expires_in之后立即执行binding.pry并检查response.headers时,它是空的......似乎也是错误的。

我在我的控制器中before_filter执行了上述操作,并且在我致电render之前也已尝试回复我的回复。

我应该补充一点,我已经尝试设置" Cache-Control"使用response.headers["CacheControl"] = "blah"手动标题,但这也不起作用,而且我已经在其他地方读过Rails不允许这样做。

有没有人对我在这里做错了什么有任何想法?

1 个答案:

答案 0 :(得分:2)

这实际上取决于我在应用程序中阻止缓存发生的其他配置(特别是Bullet.disable_browser_cache设置,这对开发环境来说是正确的)。将此设置为false意味着缓存正常工作。