Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTTP请求在时间方面是否嵌套?_Http_Tcp - Fatal编程技术网

HTTP请求在时间方面是否嵌套?

HTTP请求在时间方面是否嵌套?,http,tcp,Http,Tcp,上下文:我正在制作一个web服务器 示例:假设有一个文件index.htm,其中包含一些包含图像的标记 首先,客户端向服务器发送index.htm请求。然后服务器用标记进行响应 问题1 在客户端发送第二个图像请求之前,服务器是否将所有标记发送到客户端 或 客户端是否在从服务器接收到所有标记之前发送图像请求 问题2 如果在进一步请求之前收到所有标记,是否关闭连接并为图像打开新的连接?客户端(浏览器)需要获取HTML文档,以决定下一步将加载哪些文件。这种设计有很多原因。我能想到一些,但其他人可能对此

上下文:我正在制作一个web服务器

示例:假设有一个文件index.htm,其中包含一些包含图像的标记

首先,客户端向服务器发送index.htm请求。然后服务器用标记进行响应

问题1

在客户端发送第二个图像请求之前,服务器是否将所有标记发送到客户端

客户端是否在从服务器接收到所有标记之前发送图像请求

问题2

如果在进一步请求之前收到所有标记,是否关闭连接并为图像打开新的连接?

客户端(浏览器)需要获取HTML文档,以决定下一步将加载哪些文件。这种设计有很多原因。我能想到一些,但其他人可能对此了解得更多

  • 一些HTTP请求(大多数非人工请求)对图片文件不感兴趣
  • web服务器(每小时可能接收数百万个请求)解析其传出的HTML文件(对于每个传入的HTTP请求!!)并解密可能需要发送的图片,这将是非常劳动密集且效率低下的。HTML的解析是浏览器的工作,因为其他与数据传输无关的原因(格式化、布局、优雅地处理HTML中的编码错误),浏览器必须非常详细地解析HTML
  • 通常,嵌入的图片(来自不同域)存在于其他web服务器上。显然,浏览器必须完成获取这些图片的工作。为什么不把所有的照片都拍下来
  • HTTP上的许多数据传输都与JavaScript相关。如果web服务器必须分析传出页面的所有JavaScript,那将是一场进一步的噩梦。处理JavaScript(通常和/或主要)是浏览器的工作 注意:有些web服务器确实会处理JavaScript来预处理文件。还有一些基于JavaScript的web服务器架构(最重要的是node.js)。但这偏离了你的问题

    你的第二个问题更复杂。更高版本的HTTP允许对多个GET或POST事务重用同一连接。我不是这里的专家。请看这里:

    希望有帮助

    在客户端发送第二个图像请求之前,服务器是否将所有标记发送到客户端

    对。只有在完全接收并成功解析初始HTML文档之后,客户端才会启动对HTML中提到的资源的请求

    这就是为什么性能意味着必须尽快交付完整的DOM

    如果在进一步请求之前收到所有标记,是否关闭连接并为映像打开新的连接


    那要看情况。HTTP支持持久连接,但浏览器也可以尝试同时打开多个连接

    我可能误解了你的第一个问题。由于浏览器可能同时打开多个连接,因此很难预测数据到达的顺序。这基于浏览器如何管理数据传输的实现细节。这可能因浏览器而异。我不确定答案。