鉴于Heroku Cedar没有由Varnish提供的http缓存,我想使用Rack::Cache
。 我被告知rails 3.1.1默认情况下已经启用了Rack::Cache
,我只需要确保在配置中存在:
config.action_controller.perform_caching = true
我需要选择一个缓存存储,这个实验我使用的是:
config.cache_store = :memory_store
在我想要缓存的页面的操作中,我添加了以下行:
response.header['Cache-Control'] = 'public, max-age=300'
response.header['Expires'] = CGI.rfc1123_date(Time.now + 300)
这段代码在使用Varnish时可以正常工作,第一次请求将返回200,之后的请求(5分钟内)将返回304
。
但是在Rails 3.1和Heroku Cedar Stack上不会发生这种情况。虽然响应中包含这些头部信息,但随后的请求返回200而不是304。
我做错了什么?谢谢。