4

我的书和讲师说非持久性 HTTP 连接为每个 HTTP 对象打开单独的 TCP 连接(维基百科说“对于每个 HTTP 请求/响应对”)。

但是如何定义 HTTP 对象是什么?一个包含 10 个图像、3 个视频和 10 个不同 HTML 文本段落的网站。这是多少个物体?网站只是一个对象,所以我们只需要一个 HTTP 请求和一个 TCP 连接吗?还是这 23 个不同的 HTTP 对象?

如果我说网站需要一个 HTTP 请求,图像需要 10 个新请求,视频需要 3 个新请求,是否正确?但是文字呢?

谢谢 :)

4

5 回答 5

2

是的,您需要为其中的每一个建立连接...除了文本,文本是 html 的一部分,因此它在同一个文件中下载。

常规流程:

  • 打开连接下载网页(包括 html 文件文本,除非每个文件都被注入到页面中,即 ajax 请求等,然后每个文件都有一个 http 连接)
  • 解析图像等网址
  • 为每个图像、视频、swf、javascript、css 等文件打开连接
于 2013-05-31T15:46:57.753 回答
0

您将在网站上为 html 建立一个连接,包括文本(如果它直接位于 html 中)(如果每个段落都在它自己的 iframe 中,那么它将是一个连接),而且您每个都有一个连接图像和每个视频一个。

于 2013-05-31T15:45:20.180 回答
0

对每个文件执行一个 HTTP 请求:一个用于包含页面文本和标记的 HTML 文件,一个用于图像文件,等等。

于 2013-05-31T15:46:36.867 回答
0

没有“HTTP对象”之类的东西,所以你的问题没有任何意义。

有些资源是通过 HTTP URL 获取的。

基本上,HTML 页面中的每个 src= 属性都命名了另一个资源,当然页面本身就是一个资源。

于 2013-06-01T01:11:47.753 回答
0

HTTP 对象只是最通用的术语,意思是“由 URL 标识的东西”:) 它被用于 HTTP 规范(与面向对象编程完全无关):

https://www.w3.org/Protocols/HTTP/Request.html

关于TCP/IP问题:

浏览器可以将连接池化,这意味着它可以重用已建立的 TCP(和 TLS)来处理更多后续请求,从而节省一些开销。这由Connection: keep-aliveHTTP/1.1 标头控制,对加载对象(资源)的网页完全透明。

于 2019-05-24T03:08:40.610 回答