большая проблема с возвратом данных в формате json - PullRequest
3 голосов
/ 20 марта 2012

У меня есть действие контроллера, которое возвращает структуру 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 отлично работает как для производства, так и для режима разработки с большим набором данных.Но все остальные браузеры не работают.Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 21 марта 2012

AFAIK из вашего поста и опыта работы с Facebook ETag, вы получаете "304 Не изменено", потому что:

  1. Вы отправляете заголовок "HTTP_IF_NONE_MATCH" из вашего запроса на производственном сервере
  2. и ваша запись не была изменена.

Ваш запрос получает ответ 200, только если etag на стороне сервера не соответствует значению etag в Http-If-None-Match.Если совпадения, вы получите «304 Не изменено»

Я думаю, что env производства.включил etag и развил env, не сделал.

Вы можете взглянуть на это, http://archives.ryandaigle.com/articles/2008/8/14/what-s-new-in-edge-rails-simpler-conditional-get-support-etags

0 голосов
/ 20 марта 2012

Попробуйте тонкий .Вы можете прокси-запросы на тонкий сервер и по-прежнему использовать nginx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...