【问题标题】:Ruby, Sinatra and Closing ConnectionsRuby、Sinatra 和关闭连接
【发布时间】: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 标头,我想停止!

【问题讨论】:

    标签: ruby sinatra


    【解决方案1】:

    啊哈!运行我的 Sinatra 应用程序的服务器 Mongrel 似乎不支持 Keep-Alive。所以我就这么做了:

    set :server, 'thin'
    

    gem install thin 之后,一切似乎都变得更好了!

    【讨论】:

      【解决方案2】:

      我根本不会说 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,我会继续吃掉我看起来像个白痴的事实。

      【讨论】:

      • 这里没有白痴相信我,它应该非常易于使用,但我似乎无法弄清楚! Sinatra 是一个可以在任意数量的服务器上运行的框架,我目前正在将它与 mongrel(内置于 Ruby)一起使用,所以我想我需要去那里寻找一些答案!
      • @JP:那么,是的,在 Mongrel 的文档中查找有关 keep alives 的信息。我现在正在寻找,如果我发现了什么,我会修改答案。
      猜你喜欢
      • 1970-01-01
      • 2013-03-18
      • 2011-01-13
      • 2011-03-20
      • 2012-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      相关资源
      最近更新 更多