Руби, Синатра и замыкание связей
Вопрос
Кто-нибудь знает, есть ли способ запретить Синатре отправлять сообщение Connection:close» в своих ответах?
Чтобы внести ясность, у меня есть очень простой
get '/path' do
puts "Some (~200 byte long) string"
end
Но, посмотрев на вывод сетевого анализатора, я увидел, что он отправляет Connection: close
заголовок сразу после HTTP/1.1 200 OK
, который я хотел бы остановить!
Решение
Ах-ха!Кажется, Mongrel, сервер, на котором работало мое приложение Sinatra, не поддерживает Keep-Alive.поэтому я просто сделал:
set :server, 'thin'
после gem install thin
и вроде все стало лучше!
Другие советы
Я вообще не говорю на Ruby, и на сайте Синатры не совсем понятно, что это такое (это фреймворк для Ruby?), так что, возможно, я здесь совершенно не в себе, но:
Connection: close
отправляется вашим веб-сервером, когда поддержка активности отключена.Из соображений масштабируемости сохранение активности обычно считается первым шагом на пути к успеху. вещи, которые нужно отключить на вашем сервере.Справедливости ради надо отметить, что в обоих случаях существует своя школа мысли, особенно когда речь идет об «Аяксе».
Я использую nginx для своей работы с Django (думаю, это похоже), и в nginx я отключил поддержку активности следующим образом:
14:58 jsmith@lateralus% grep alive /etc/nginx/nginx.conf ~
keepalive_timeout 0;
Apache использует KeepAlive (см. здесь).
Если у Sinatra есть собственный веб-сервер, я не могу найти никакой документации, чтобы включить поддержку активности, и я пойду дальше и смирюсь с тем фактом, что я выгляжу как идиот.