【问题标题】:How do you define an HTTP object?你如何定义一个 HTTP 对象?
【发布时间】:2013-05-31 15:41:16
【问题描述】:

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

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

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

谢谢:)

【问题讨论】:

    标签: http networking web network-programming


    【解决方案1】:

    是的,您需要为每一个连接...

    常规流程:

    • 打开连接下载网页(包含 html 文件文本,除非 每个都被注入到页面中,即 ajax 请求等,然后每个都是 http 连接)
    • 解析图片等网址
    • 为每个图像、视频、swf、javascript、css 等文件打开连接

    【讨论】:

    • 谢谢! :) 所以我们定义了一个 HTTP 对象,就像 HTML 文档所引用的一样? (顺便感谢您在最后添加示例)
    【解决方案2】:

    网站上的 html 会有一个连接,包括文本(如果它直接在 html 中)(如果每个段落都在它自己的 iframe 中,那么它就是一个连接),另外你会有每个图像一个,每个视频一个。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        资源是通过 HTTP URL 获取的。

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

        【讨论】:

        • 是的,资源是必需的 HTTP 对象 :)
        【解决方案5】:

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

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

        关于TCP/IP问题:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-10-23
          • 1970-01-01
          • 2016-10-26
          • 1970-01-01
          • 2014-07-28
          • 2021-08-04
          • 1970-01-01
          相关资源
          最近更新 更多