到目前为止,我的理解是,当某人尝试访问网页时,会发生以下情况:
如果一切正常,则Web浏览器将接受HTTP响应,并根据接收到的HTML构建DOM树。如果缺少任何资源,则需要为每个资源分别发出新的HTTP请求。
每个这些HTTP请求都需要打开另一个套接字(与服务器建立新的虚拟连接)。
问:效率如何?我知道这些资源可能位于另一台主机上(确实需要新的TCP连接),但是如果它们都在同一主机上,那么在单个TCP连接内传输所有数据的效率就不会更高。
答案 0 :(得分:2)
每个HTTP请求都需要打开另一个套接字(与服务器建立新的虚拟连接)。
不,不是。默认情况下,HTTP 1.1使用持久连接,而HTTP 1.0使用非官方的Connection: keep-alive
头之前,HTTP 1.0在差不多二十年前就完成了同样的事情。
问:那有效率吗?
不是,这就是为什么它不会发生。
我知道这些资源可能位于另一台主机上(确实需要新的TCP连接),但是如果它们都在同一主机上,那么在单个TCP连接内传输所有数据的效率就不会更高。
是的,默认情况下就是这样。