手写WEB服务器-04-并行请求

手写WEB服务器-04-并行请求

1.引言

在前面的例子中,为了便于理解,我们建立了一个极其简单的静态页面,整个http请求中只涉及一个index.html文件。

然而真实的网页可能包含很多信息,比如文本、图片、js文件、css文件等:

在这种场景下,web服务器是怎么处理的呢?

2.客户端请求

首先我们看到,浏览器的地址只需要我们敲一次,敲进去之后,浏览器首先会请求我们指定的页面:

然后服务器会查找相关页面对应的文件,把这个文件发给浏览器:

浏览器收到这个文件中,发现文件里面包含了一些其他资源的链接:

然后他会自动地再发起TCP连接,再把这些链接请求给web服务器(在本例中共发起了11个TCP连接):

浏览器请求的文件类型也是多种多样:

那我们的服务器是如何处理这些请求的呢?

3. 服务器处理

首先,我们的代码并没有限定请求浏览器请求的文件是不是html文件,任何文件都是可以的:

唯一的区别是,我们要在http应答中,告诉浏览器我们给他发的文件是个什么类型的文件:

默认情况下,我们会填这个:

但其实我们还支持这些:

具体返回哪个文件类型,是根据浏览器所请求的文件类型的扩展名决定的。

比如客户端请求xxx.css,我们就会返回text/css,如果客户端请求xxx.js,我们就会返回application/x-javascript。

客户端浏览器接收到我们的应答后,根据相应的Content-Type渲染页面即可。是图片就展示图片,是文本就展示文本,是css就修改样式。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注