当内联javascript执行时,web浏览器是否保持web服务器连接?

does a web browser hold onto a web server connection while inline javascript is executing?

本文关键字:web 是否 服务器 连接 浏览器 javascript 执行      更新时间:2023-09-26

例如,如果我写了以下代码,其中包含一个第三方javascript的链接,而它需要1秒加载:

<!DOCTYPE>
<html>
<head>
</head>
<body>
  // note no async attribute!
  <script src="//thirdparty.com/some/slow/loading/script.js">
  </script>
</body>
</html>

到我的web服务器的http连接将保持打开,直到文档结束?

更新:我不是在Connection: Keep-alive的上下文中讨论,这显然会在页面加载后保持连接。我指的是这样一个事实,即浏览器在执行内联javascript时可能还没有完全从服务器读取文档的内容,那么它仍然会保留其连接以继续读取文件的其余部分,还是已经读取但尚未添加到DOM?

不,直到文档被完全解析后连接才保持打开。

文档在被解析时,以及外部脚本被请求、加载、解析和执行时,将继续加载。浏览器在读取文档时不会暂停,因为它现在不需要更多的数据来解析,或者因为它正在加载其他东西。它仍然会继续在后台加载文档。

打开的连接是一种比内存更昂贵的资源,因此浏览器最好尽快将所有数据读取到内存中,而不是保持连接打开以便在需要数据时从中读取。

浏览器将首先开始加载文档。一旦它解析了<script>标记,它就会与第三方服务器建立连接,并开始从那里加载JS。当主页加载完成后,将关闭与服务器的连接。然而,只要有东西(例如JS)正在加载,浏览器就会显示加载图标,并且在加载完所有内容后,它也会调用window.onload