我有一个控制器动作,它返回一个json结构。
render :json => hash_data
它适用于生产和开发模式中的小型数据集。但是,对于大型数据集,这仅适用于开发模式。在生产模式下,只返回部分json字符串。 Rails版本是3.0.9。在生产模式中:它从负载均衡器到nginx;在开发模式中:我使用webrick。
制作模式Http响应标题:
Cache-Control max-age=0, private, must-revalidate
Connection close
Etag "a7b077a364f849a57ffe582525c98ea1"
Server nginx/1.0.10 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
Status 304
X-Powered-By Phusion Passenger (mod_rails/mod_rack) 3.0.11
X-Runtime 8.462971
X-UA-Compatible IE=Edge,chrome=1
开发模式Http响应标题:
Cache-Control max-age=0, private, must-revalidate
Connection Keep-Alive
Content-Length 144561
Content-Type application/json; charset=utf-8
Date Tue, 20 Mar 2012 08:37:30 GMT
Etag "b6b9cdb7811577280320f7a3f50bd937"
Server WEBrick/1.3.1 (Ruby/1.9.2/2010-08-18)
X-Runtime 12.832829
X-UA-Compatible IE=Edge
更奇怪的是,Chrome适用于具有大型数据集的生产和开发模式。但所有其他浏览器都不起作用。任何帮助将不胜感激。
答案 0 :(得分:0)
试试thin。您可以将请求代理到Thin后端,仍然使用nginx。
答案 1 :(得分:0)
AFAIK来自您的帖子和Facebook ETag的经验,您收到“304 Not modified”,因为:
如果服务器端etag与Http-If-None-Match中的etag值不匹配,则您的请求仅获得200响应。如果匹配,您将获得“304 Not modified”
我想生产环境。打开etag,开发env,没有。