首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Heroku生产设置缓存控制与本地生产不同

Heroku生产设置缓存控制与本地生产不同
EN

Stack Overflow用户
提问于 2012-10-17 08:45:06
回答 1查看 1.6K关注 0票数 1

我有一个在http://chesseng.herokuapp.com/的heroku上运行的应用程序,当我访问页面时,chrome和它的缓存被禁用了,我得到了一个应用程序的响应头,类似于

代码语言:javascript
复制
Cache-Control:private
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/css
Date:Wed, 17 Oct 2012 00:17:19 GMT
Last-Modified:Tue, 16 Oct 2012 03:13:38 GMT
Status:200 OK
transfer-encoding:chunked
Vary:Accept-Encoding
X-Rack-Cache:miss

但是,如果我使用rails s -e production启动一个本地实例并访问它,则应用程序指纹.css的响应头如下所示

代码语言:javascript
复制
Age:5119
Cache-Control:public, max-age=31536000
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:95828
Content-Type:application/javascript
Date:Tue, 16 Oct 2012 23:01:27 GMT
Etag:"0bf9e9837d421c2e28be1ef4f0794a48"
Last-Modified:Tue, 16 Oct 2012 01:07:17 GMT
Server:WEBrick/1.3.1 (Ruby/1.9.3/2012-04-20)
Vary:Accept-Encoding
X-Content-Digest:add442e2036c1e6e9f4860dcc44496582a5c91b1
X-Rack-Cache:fresh
X-Request-Id:b89de17e397ac7b60acfe500e8d15df9
X-Runtime:0.001632
X-Ua-Compatible:IE=Edge,chrome=1

为什么缓存相关字段如Cache-Control、Etag与heroku有如此大的不同?假设我希望heroku返回Cache-Control:public,max-age=31536000。但我首先需要了解为什么Cache-Control:public, max-age=31536000要设置为本地生产模式。令人费解的是,如果我在config/environments/production.rb中设置了config.static_cache_control = "public, max-age=3600",并在生产环境中启动了一个本地服务器,它仍然返回max-age=31536000,似乎忽略了max-age=3600

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-17 10:56:53

X-Rack-Cache标头看,您使用的是rack-cache middleware,这会影响缓存标头。因为在本地,您的资源在缓存(X-Rack-Cache:fresh)中,而在Heroku上则不是(X-Rack-Cache:miss)可以解释这种差异。

尝试从您的中间件堆栈中删除机架缓存,看看差异是否消失。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12925564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档