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

标签 javascript ajax node.js browser xmlhttprequest

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

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

这一切是如何运作的?

enter image description here

最佳答案

当浏览器从服务器请求资源时,在大多数情况下,服务器会在下载开始前回复所请求资源的大小。 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>

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

关于javascript - 浏览器如何知道加载进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24903100/

相关文章:

javascript - 输入类型文件大小在 Linux/Windows 中有所不同

javascript - 如何将数据从 * .ejs 文件传输到 app.js 并处理 app.js 文件上的 HTML 标记上的单击事件

php - 在另一个 Ajax Load 加载的 Div 上使用 JQuery Ajax Load

android - 在 Android 应用程序中使用哪个 WebSocket 库?

javascript - 将参数数组从node.js传递给CasperJS

javascript - 在 Javascript 中,为什么 getBoundingClientRect() 有时会返回浮点值?

javascript - 使用 VueJS 动态加载组件和模板

javascript - 更新查询中的值作为 0 或空值输入表中

JavaScript - 通过键/值对将对象添加到对象并删除

node.js - 使用 api (nodejs) 更新 Google 表格时出错