【发布时间】:2014-08-08 04:12:14
【问题描述】:
有谁知道是否有办法阻止 Sinatra 在其响应中发送“Connection: close”标头?
说清楚,我有一个很简单的
get '/path' do
puts "Some (~200 byte long) string"
end
但是,在网络分析器中查看输出后,我发现它在 HTTP/1.1 200 OK 之后发送了 Connection: close 标头,我想停止!
【问题讨论】:
有谁知道是否有办法阻止 Sinatra 在其响应中发送“Connection: close”标头?
说清楚,我有一个很简单的
get '/path' do
puts "Some (~200 byte long) string"
end
但是,在网络分析器中查看输出后,我发现它在 HTTP/1.1 200 OK 之后发送了 Connection: close 标头,我想停止!
【问题讨论】:
啊哈!运行我的 Sinatra 应用程序的服务器 Mongrel 似乎不支持 Keep-Alive。所以我就这么做了:
set :server, 'thin'
gem install thin 之后,一切似乎都变得更好了!
【讨论】:
我根本不会说 Ruby,而且 Sinatra 网站也不太清楚它是什么(它是 Ruby 的框架吗?)所以我可能完全不喜欢这里,但是:
Connection: close 在保持活动关闭时由您的 Web 服务器发送。出于可扩展性的原因,保持活动通常被认为是在您的服务器中关闭的事情的第一步。说句公道话,有一种双向的思想流派,尤其是当涉及到 Ajax 时。
我将 nginx 用于我的 Django 工作(我认为它是相似的),并且我在 nginx 中关闭了 keep-alives,如下所示:
14:58 jsmith@lateralus% grep alive /etc/nginx/nginx.conf ~
keepalive_timeout 0;
Apache 使用 KeepAlive(请参阅 here)。
如果 Sinatra 是它自己的 Web 服务器,我找不到任何文档来开启 keep alives,我会继续吃掉我看起来像个白痴的事实。
【讨论】: