浏览器如何知道加载进度?

时间:2014-07-23 06:12:45

标签: javascript ajax node.js browser xmlhttprequest

在浏览器中加载页面时,它会显示加载页面时加载的百分比。 与使用XMLHttpRequest(XHR)执行AJAX请求时相同,它允许您查看加载百分比。

我很好奇这个功能是如何在幕后实现的。客户如何知道预先收到的数据大小?就个人而言,当我使用Node.js创建我的Web服务器时,我没有手动实现这样的功能,比如在每个毫秒间隔内向客户端发送加载百分比等等。

这一切是如何运作的?

enter image description here

1 个答案:

答案 0 :(得分:2)

当浏览器从服务器请求资源时,在大多数情况下,服务器会在下载开始之前回复所请求资源的大小。 For Example:

HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
ETag: "3f80f-1b6-3e1cb03b"
Content-Type: text/html; charset=UTF-8
Content-Length: 131
Accept-Ranges: bytes
Connection: close

<html>
<head>
  <title>An Example Page</title>
</head>
<body>
  Hello World, this is a very simple HTML document.
</body>
</html>

在上面的服务器响应中,给出了所请求资源的长度,因此客户端将知道要读取的字节数。这允许客户端显示有意义的进度指示器。