Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 浏览器如何知道加载进度?_Javascript_Ajax_Node.js_Browser_Xmlhttprequest - Fatal编程技术网

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

Javascript 浏览器如何知道加载进度?,javascript,ajax,node.js,browser,xmlhttprequest,Javascript,Ajax,Node.js,Browser,Xmlhttprequest,在浏览器中加载页面时,它会显示加载页面时加载的百分比。 与使用XMLHttpRequest(XHR)执行AJAX请求时一样,它允许您查看加载百分比 我只是好奇这种特性是如何在幕后实现的。客户如何事先知道将接收的数据大小?就我个人而言,当我使用Node.js创建web服务器时,我没有手动实现这样的功能,比如每隔毫秒向客户端发送加载百分比,等等 这一切是如何运作的 当浏览器从服务器请求资源时,在大多数情况下,服务器会在下载开始之前回复请求的资源大小 HTTP/1.1200正常 日期:2005年5月2

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

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

这一切是如何运作的


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

HTTP/1.1200正常
日期:2005年5月23日星期一格林尼治标准时间22:38:34
服务器:Apache/1.3.3.7(Unix)(Red Hat/Linux)
最后修改:周三,2003年1月8日23:11:55格林尼治标准时间
ETag:“3f80f-1b6-3e1cb03b”
内容类型:text/html;字符集=UTF-8
内容长度:131
接受范围:字节
连接:关闭
示例页
你好,世界,这是一个非常简单的HTML文档。

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

我不是这方面的专家,但我认为加载的百分比只是已呈现网站的百分比。当浏览器从服务器检索数据时,它知道确切的大小,然后在渲染每个元素后只更新剩余的数据。但我不确定。可能是通过读取内容长度实体标题?欢迎使用堆栈溢出!回答得好。我只是想让你知道,我提交了一个编辑,将包括在链接旁边的答案本身的例子。你做得很好,但是如果你发布了一个链接,但是没有链接内容的概要,这不是一个好的做法,因为如果链接的网站发生了变化,或者链接中断,你的答案可能会变得毫无用处。
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>