龙空技术网

对CGI(Common Gateway Interface)通用网关接口理解

黑牛儿 165

前言:

目前我们对“htmlcgi”都比较珍视,我们都需要学习一些“htmlcgi”的相关知识。那么小编也在网上汇集了一些对于“htmlcgi””的相关资讯,希望兄弟们能喜欢,小伙伴们一起来了解一下吧!

做了很多年的程序猿,最近突然发现对平时工作中一直使用的知识一知半解,就抽时间对一些知识详细了解了一下,这是对CGI的个人理解,记录下来。

CGI解决的问题

早期,所有的网站都是静态网站,用户请求web server就可以直接获取类似.html的静态文件,返回给用户。

静态请求

随着互联网的不断发展,静态网站已经不能满足需求,但是web server是不能处理动态网站的,需要调用其它语言解析器才能处理用户请求。这时就有了CGI.

CGI是一种让客户端(web浏览器)与Web服务器(nginx、apache等)程序间进行通信(数据传输)的协议。CGI可以用任何一种具有标准输入、输出和环境变量的语言来实现,如php、perl、tcl。不同类型的语言只需要按照CGI的标准来开发程序,就能实现与web服务器间的交互。早期的CGI程序大多是用C与C++实现的。

CGI运行原理(如图)

CGI运行原理

CGI的缺点CGI程序每次处理http请求都会进行程序的启动,退出的全部流程(初始化运行环境,加载扩展等),导致性能很差,完全不能满足高并发场景传统的CGI接口方式安全性较差,不适合使用在生成环境中cgi对每个请求都会新建一个进程处理,处理完就关闭。效率很低,所以基本已经不在生产部署时采用

标签: #htmlcgi