页面加载时,进度条/百分比的是靠什么技术获得到底加载了百分比例的

2018-02-22 16:43:57 +08:00
 edison111cry

有些页面加载过程中会显示进度条,或者是一个百分的比例,从 0 到 100 一点点显示。或者是加载一个文件图片,到 100%了显示出来。

就比如说我现在用 ajax 请求一个后台的文件,后台应该是不可能知道前端请求的进度的吧,那么前端是用的啥技术才可以显示加载的百分比呢,想问一下这是哪块的技术,求指导

7669 次点击
所在节点    问与答
24 条回复
geelaw
2018-02-22 23:47:50 +08:00
@loading 如果你说的是安装补丁,那用的是 **不确定** 进度环,本来就没有进度多少的指示;如果你说的是升级安装系统,那么那个进度环是在反应安装进度的,因此可以出现不动一段时间的情况。
hxsf
2018-02-23 08:21:55 +08:00
@azh7138m chunk 传输才没有 content length,一般来说流式传输动态内容时才会使用 chunk,普通静态内容都是非 chunk 的
azh7138m
2018-02-23 08:46:53 +08:00
@hxsf

> When a message does not have a Transfer-Encoding header field, a
Content-Length header field can provide the anticipated size

在现代,并不应该假定 content length 是存在的,gzip 很常见
hxsf
2018-02-23 09:47:35 +08:00
@azh7138m #23 是很常见啊,不过都是针对文本内容的。对于 图片、字体、媒体资源,依然可以知道总大小。

PS:
gzip 一般是在 content-encoding
Transfer-Encoding 一般才是 chunk

gzip 是可以得知 length 的。不过就需要 server 用 buffer 缓存压缩后的内容,全部压缩完后得到大小在发送(比较伤,所以一般 server 采用 gzip、br 等后就分块传输(可以流式编码了))。

而对于 js、css 等文本资源,一般文件较小的没有加载进度的需求吧,只有数量较多、总体较大的文件要加载时,才有这个需求,如果服务器不返回 size,则可以采用 已加载数量 /总数量 的方式。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/431701

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX