Ruby http服务器可以在本地快速加载,但需要花费更多时间来加载LAN

时间:2013-12-23 10:05:35

标签: ruby

当我在本地打开Ruby http服务器时,我。即通过http://localhost:4567,加载页面只需要很少的时间:

  • ruby -run -e httpd . -p4567,目录列表 - 即时;
  • ruby -run -e httpd . -p4567,一个沉重的jpeg - 瞬间;
  • middleman server,刷新以前打开的网站 - 约5秒。

但是当我通过LAN执行相同操作时,加载页面需要更长的时间。我从两台远程计算机上试了一下:一台通过WiFi的手机和一台运行在与Web服务器相同的主机上的虚拟机(使用虚拟网络适配器)。

  • ruby -run -e httpd . -p4567,目录列表 - 约5秒;
  • ruby -run -e httpd . -p4567,一个沉重的jpeg - 开始下载图像约5秒钟,然后几乎立即加载它;
  • middleman server,刷新之前打开的网站 - 15-30秒,可能会导致手机超时。

这可能是什么原因以及如何重新获得?

PS主机是Windows 7,但似乎两种方式都可以,i。即当服务器在Linux虚拟机上运行时。

1 个答案:

答案 0 :(得分:0)

好的,结果是Webrick的问题。

此问题/答案与以下内容重复:Webrick is very slow to respond. How to speed it up?以下是链接页面的答案摘要。

可能的解决方案(选择一个):

  1. 如果可能,请使用Thin而不是Webrick(Windows上没有Thin,并且您的特定项目可能无法使用Thin)。任何其他Ruby Web服务器也可能适合。
  2. 如果您遇到Webrick,请将DoNotReverseLookup: true传递给WEBrick::HTTPServer.new,在项目中对其进行实例化。
  3. 如果由于某种原因您无法修改项目如何利用Webrick,您可以破解Webrick来源。在系统中找到webrick/config.rb文件,并将:DoNotReverseLookup参数设置为true。每次更新依赖关系时,您都必须重复此步骤。
  4. 在Linux上,您可以停止avahi-daemon服务来解决此问题。请注意,它还会阻止自动发现网络打印机和共享。