ruby-on-rails – Rails 3.1和Http页面缓存
发布时间:2020-12-17 04:25:38 所属栏目:百科 来源:网络整理
导读:鉴于Heroku Cedar没有Varnish提供的http缓存,我想使用Rack :: Cache. 我被告知rails 3.1.1默认情况下Rack :: Cache处于活动状态,我只需要确保在配置中: config.action_controller.perform_caching = true 我需要选择一个缓存存储,对于我正在使用的这个实验
鉴于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不会发生这种情况. 我究竟做错了什么?谢谢. 解决方法
如您所述,Cedar堆栈不使用Varnish.这意味着Web请求将始终命中ruby服务器.
考虑到这一点,Rack :: Cache将尊重您的标头并提供缓存的内容. 但是,由于请求实际上是通过http层进入rails应用程序,因此响应将始终为200,因为缓存不再发生在http层. 要确认这是真的,请在您的一个缓存操作中插入: <%= Time.now.to_i%> 然后,重新加载页面几次,你会发现时间戳不会改变. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |