fastcgi与cgi有哪些区别

介绍

这篇文章将为大家详细讲解有关fastcgi与cgi有哪些区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

现在的cgi基本没人使用,不安全以及性能极其低下,越来越多的使用网络内置扩展,fastcgi。例如微软iis的ISAPI, apache的php模块,nginx的php-cgi.CGI,内置模块,fastcgi这三种性能最好的要属于fast_cgi速度最快,但是需要额外的进程。解析来看看cgi和fastcgi有什么不同。

<强> cgi方式介绍:

cgi在2000年或更早的时候用得比较,多以前web服务器一般只处理静态的请求,如果碰到一个动态请求怎么办呢? web服务器会根据这次请求的内容,然后会叉一个新进程来运行外部c程序(或perl脚本…),这个进程会把处理完的数据返回给web服务器,最后web服务器把内容发送给用户,刚才叉的进程也随之退出。如果下次用户还请求改动态脚本,那么web服务器又再次叉一个新进程,周而复始的进行。

<强>网络内置模块介绍:

后来出现了一种更高级的方式是,web服务器可以内置perl解释器或php解释器。也就是说这些解释器做成模块的方式,web服务器会在启动的时候就启动这些解释器。当有新的动态请求进来时,web服务器就是自己解析这些perl或php脚本,省得重新叉一个进程,效率提高了。

<强> fastcgi方式介绍:

fastcgi的方式是,web服务器收到一个请求时,他不会重新叉一个进程(因为这个进程在web服务器启动时就开启了,而且不会退出),web服务器直接把内容传递给这个进程(进程间通信,但fastcgi使用了别的方式,tcp方式通信),这个进程收到请求后进行处理,把结果返回给web服务器,最后自己接着等待下一个请求的到来,而不是退出。

<>强fastcgi跟cgi的区别表格:

 fastcgi与cgi有哪些区别

举个例子:服务端现在有10个万个字单词,客户每次会发来一个字符串,问以这个字符串为前缀的单词有多少个。那么可以写一个程序,这个程序会建一棵trie树,然后每次用户请求过来时可以直接到这个单词查找树去查找。但是如果以cgi的方式的话,这次请求结束后这课单词查找树也就没了,等下次再启动该进程时,又要新建一棵trie树,这样的效率就太低下了。,而用fastcgi的方式的话,这课单词查找树树在进程启动时建立,以后就可以直接在trie树上查询指定的前缀了。

关于fastcgi与cgi有哪些区别就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

fastcgi与cgi有哪些区别