网站的 web server 与缓存
1.1 Web server
Webserver 用来解析 HTTP 协议。当 web 服务器接收到一个 HTTP 请求时,会返回一个
HTTP 响应,例如送回一个 HTML 页面。为了处理一个请求, web 服务器可以响应一个静
态页面或者图片。 进行页面跳转, 或者把动态响应的产生委托给一些其它的程序完成, 比如
CGI,JSP,servlets,ASP ,PHP 脚本。
当用户访问一个网站时,首先用户通过查询 DNS 服务器,得到该域名对应的 IP 地址,然
后使用这个 IP 地址来进行访问。 用户的请求是一个 url 地址, 在 web 服务器端, url 地址对
应 web 服务器上的文件系统中的某个网站文件的路径。 Web server 的作用就是解析 HTTP
协议,通过用户发来请求的 url 地址从 web 服务器的文件系统中找到用户需要的 HTML 页
面、静态文件, 然后返回给用户。如果用户访问的是动态页面,则将请求转发到应用服务器
来执行。
1.1.1 FastCGI
1.1.1.1 CGI
CGI(Common Gateway Interface) ,指运行在服务器上, 提供同客户端 HTML 页面的接口。
多数 CGI 程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相
应的信息反馈给浏览器。
1.1.1.2 FastCGI
FastCGI 是语言无关的、可伸缩架构的 CGI 开放扩展,其主要行为是将 CGI 解释器进程保
持在内存中并因此获得较高的性能。 而 CGI 解释器的反复加载是 CGI 性能低下的主要原因。
如果 CGI 解释器保持在内存中并接受 FastCGI 进程管理器的调度, 则可以提供良好的性能、
伸缩性能和 Fail-over 特性等。
FastCGI 的工作原理如下:
(1) FastCGI 进程管理器自身初始化,启动多个 CGI 解释器进程 (多 php-cgi 进程 )并等待来
自 web server 的连接。启动 php-cgi FastCGI 进程时,可以配置以 TCP 和 UNIX 套接字两
种方式启动。
(2) 当客户端请求到达 web 服务器时,web 服务器将请求采用 TCP 协议或者 UNIX 套接字方
式转发到 FastCGI 主进程, FastCGI 主进程选择并连接到一个 CGI 解释器 (子进程 )。Web
服务器将 CGI 环境变量和标准输入法发送到 FastCGI 子进程 php-cgi 。
(3)FastCGI 子进程完成处理后将标准输出和错误信息从同一连接返回 web 服务器。当
FastCGI 子进程关闭连接时,请求便告知处理完成。 FastCGI 子进程接着等待并处理来自
FastCGI 进程管理器的下一个连接。
FastCGI 的优点如下: