Web建站过程中流程

首先要明白网站访问大概是什么过程,假如你在浏览器地址栏输入这个地址:http://www.zhihu.com/question/22689579,访问过程如下,浏览器与服务器交流,服务器和数据库交流(有时候数据库就在服务器那台机子上)。

HTTP 访问

Web Server 与Web Services

浏览器给服务器发一个请求,服务器不是一看就知道怎么响应的。首先这些请求和响应要有一个通用的写法,也就是要有一个协议,常用的是HTTP协议。

像最前面的图,服务器的响应写了一个状态吗 200 OK,是HTTP协议里约定俗成的一个东西,服务器写 200 OK 在响应里,表示 "你请求的这个东西我有",如果是404 Not Found,就是 "你请求的这个东西我这里没有"。

HTTP响应里还包括很多东西,比如 Content-type 表示服务器发过来的文件类型是什么(文本?动画?图片?音频?),这样发过去了人家浏览器就知道怎么展示给用户看。人家服务器怎么知道按协议要写什么东西进去呢,这就是 Web Server 干活的时候了。

形象化一下HTTP响应,大概就长这样:

HTTP响应

PHP,服务器脚本,Web FrameWork

开头那张图里服务器接到请求之后可以给访客发送对应的文件,但是服务器除了 “接请求—发文件”之外,还可以处理上传来的文件! 另外还能接收你发过来的各种请求,去操作服务器本地的文件或者数据库的。要干这些事,自然服务器那边也少不了要有代码了,这些代码就是服务器脚本。前面说的 Web Service 传输的数据,主要也是由服务器脚本生成,再交由Web Server,按照某种协议套好整个响应的格式,返回给客户端的。

PHP 就是一种常见的用来写服务器脚本的语言,其实只要是能拿来写大家传输数据的通用接口(CGI)的语言都可以用来写服务器脚本(也就是说几乎所有编程语言都可以写),只是因为现成工具的丰富程度和专攻长度不一样,所以有一些语言在写服务器端脚本的时候会比较热门。

为了方便,我们在写服务器脚本的时候,通常还会用个同语言写的Web Framework 来处理各种细节,防御一些常见的攻击,提供跨站认证(比如用已有的微博账号注册其他网站)的接口,利用cookie处理登陆状态和用户设置,生成网页模板之类的。

一个普通网站访问的过程:

1、用户操作浏览器访问,浏览器向服务器发出一个HTTP请求;

2、服务器接收到HTTP请求,Web Server进行相应的初步处理,使用服务器脚本生成页面;

3、服务器脚本(利用Web Framework) 调用本地和客户端传来的数据,生成页面;

4、Web Server 将生成的页面作为HTTP响应的body,根据不同的处理结果生成 HTTP header,发回给客户端;

5、客户端(浏览器)接收到HTTP响应,通常第一个请求得到的HTTP响应的body里是HTML代码,于是对HTML代码开始解析;

6、解析过程中遇到引用的服务器上的资源(额外的CSS、JS代码、图片、音视频、附件等),再向Web Server发送请求,Web Server找到相应的文件,发送回来;

7、浏览器解析HTML包含的内容,用得到的CSS代码进行外观上的进一步的渲染,JS代码也可能会对外观进行一定的处理;

8、用户与页面的交互(点击,悬停等等)时,JS代码对此做出一定的反应,添加特效与动画。

9、交互的过程中可能需要向服务器索取或提交额外的代码(局部的刷新,类似微博的新消息通知),一般不是跳转就是通过JS代码(生成资源or写入数据之类的),把资源返回给客户端,客户端用得到的资源来实现动态效果或其他改变。

为了方便调试,很多Web Framework 会自带一个简单的Web Server,或者有些Web Server会自带一个简单的Web Framework,实际部署到服务器上开放使用的时候为了性能或者安全等多方面的考虑,可以把内置的Web Server换成其他的,例如 Apache 或者 Nginx(知乎用的是Tornado做Framework,Server换成了Nginx)。

你可能感兴趣的:(Web建站过程中流程)