如今的CGI基础没人运用,不安全以及机能极为低下,越来越多的运用web内置扩大、fastCGI。比方微软iis的ISAPI,apache的php模块,nginx的php-cgi。CGI、内置模块、fastcgi这三种机能最好的要属于fast_cgi速率最快,然则须要分外的历程。剖析来看看CGI和FASTCGI有什么差别.
CGI体式格局引见:
cgi在2000年或更早的时刻用得比较多,之前web服务器平常只处置惩罚静态的要求,假如遇到一个动态要求怎么办呢?web服务器会依据此次要求的内容,然后会fork一个新历程来运转外部c顺序(或perl剧本...), 这个历程会把处置惩罚完的数据返回给web服务器,末了web服务器把内容发送给用户,适才fork的历程也随之退出。 假如下次用户还要求改动态剧本,那末web服务器又再次fork一个新历程,循环往复的举行。
web内置模块引见:
厥后涌现了一种更高等的体式格局是, web服务器能够内置perl诠释器或php诠释器。 也就是说这些诠释器做成模块的体式格局,web服务器会在启动的时刻就启动这些诠释器。 当有新的动态要求进来时,web服务器就是本身剖析这些perl或php剧本,免得从新fork一个历程,效力提高了。
fastcgi体式格局引见:
fastcgi的体式格局是,web服务器收到一个要求时,他不会从新fork一个历程(由于这个历程在web服务器启动时就开启了,而且不会退出),web服务器直接把内容传递给这个历程(历程间通讯,但fastcgi运用了别的体式格局,tcp体式格局通讯),这个历程收到要求后举行处置惩罚,把效果返回给web服务器,末了本身接着守候下一个要求的到来,而不是退出.
fastcgi跟cgi的区分表格:
举个例子: 服务端如今有个10万个字单词, 客户每次会发来一个字符串,问以这个字符串为前缀的单词有多少个。 那末能够写一个顺序,这个顺序会建一棵trie树,然后每次用户要求过来时能够直接到这个trie去查找。 然则假如以cgi的体式格局的话,此次要求完毕后这课trie也就没了,等下次再启动该历程时,又要新建一棵trie树,如许的效力就太低下了。 而用fastcgi的体式格局的话,这课trie树在历程启动时竖立,今后就能够直接在trie树上查询指定的前缀了。
以上就是fastcgi与cgi有什么区分?的细致内容,更多请关注ki4网别的相干文章!