高级 Web 服务器能否比基本 Web 服务器更快?

Goo*_*bot 2 nginx web-server cgi thttpd

一个bsic web server比如pythonSimpleHTTPServer或者THTTPD用最少的进程读取静态文件;因此相当快。通常,添加更多功能以创建高级 Web 服务器(但仍然是轻量级的,例如nginx)会减慢此过程。

先进的网络服务器可以玩一个技巧来加快进程吗?或者比最简单的更简单是不可能的,最简单的是读取静态文件的最快方法?我的意思是nginx(或其他声称快速的轻量级 Web 服务器)可以比THTTPD(或其他具有最少流程的基本 Web 服务器)更快吗?

那么 CGI 脚本呢,因为HTTPD和 pythonCGIHTTPServer可以简单地执行 cgi 脚本。

Shi*_*ish 5

“简单”和“快速”并不总是相关的,尤其是在计算方面——在这种情况下,SimpleHTTPServer 使用简单的文件读取方法,简单的网络方法,干净明显的处理方式,易于新程序员阅读等;nginx 有大量复杂的代码,可以以最有效的方式利用先进的高速文件和网络 API,还有一些奇怪的内存分配技巧,以避免复制数据等。

另外,语言开销——当你的瓶颈是数据库或文件系统时,python 非常快,但我实际上发现,为了每秒提供数千个缩略图,nginx 和所有复杂的东西在 C 中比一个简单的 python 程序快 10 倍那只是从内存中返回数据。

至于 THTTPD 与 nginx,它们都是 C,而且都是为了速度而不是简单而设计的,所以我猜它们在性能上会更接近 - 但 thttpd 似乎最后一次更新是在 2003 年,这意味着它早于nginx 使用的大多数高速 API。