为什么每次进度条加载的时候 , 都会剩最后1% , 感觉永远加载不完
【编程语言|为什么每次进度条加载的时候,都会剩最后1%,感觉永远加载不完】答:
其实并不是恰好每次都剩最后1%的时候卡住 , 而是浏览器自己其实都不知道自己加载了百分之多少 。 也就是说 , 浏览器的进度条加载本质就起到一个“安慰剂”的作用 , 浏览器的进度条按照一个定义好的速度走 , 提前加载完成就突然加速跑到最后 , 一直加载不完就越走越慢 , 实在不行就在99%一直等着 。 为什么浏览器自己都不知道自己加载了百分之多少呢?这要从网页的加载原理说起 。
当我们打开一个网页的时候 , 我们首先会收到服务器发来的一个后缀为html的文件 , 这个这个文件包含了这个网页的整体框架信息 。 用浏览器(如:Chrome、Edge)打开一个网页后按F12就可以看到这个网站的html文件 。 但是绝大部分的网页除html文件以外还有很多别的文件用于补充html中的内容 , 例如css文件(层叠样式表)、JavaScript文件、图片文件等 。 这些需要补充的内容都在html文件中列出 。
一般地 , 浏览器在显示网页时是一边解析一边请求的模式 。 浏览器首先会从头开始解析html文件 , 可能解析到某一行到时候 , html文件告诉浏览器:“嘿 , 这里需要一个css文件 , 你快找服务器把这个搞来 。 ”当服务器找来这个css文件并开始解析的时候 , css文件又命令服务器去请求另一个JavaScript文件(开始套娃) 。
除此之外 , html还有一万种方式来“折磨”浏览器 。 可能浏览器在前面辛辛苦苦渲染好了网页的某个元素 , 然后在后面运行某个JavaScript文件时 , 它又告诉浏览器:“你快去把刚刚渲染好那个东西给我隐藏了” 。 然后因为少了个元素 , 刚刚加载好的部分又得重新调整 。
所以浏览器在接收到最开始的html文件时 , 其实浏览器根本无法估计自己一共需要向服务器请求多少个文件 , 需要进行多少次操作 。 浏览器别无选择地任劳任怨的工作 , 不知道什么时候才能做完这些东西 , 直到html文件的结束标识的到来 , 也有可能永远也等不到的到来(服务器卡了) 。
by Paarthurnax
想了解更多精彩内容 , 快来关注中科院物理所
推荐阅读
- IT|为什么感染飙升但死亡人数有限?研究显示T细胞可防止奥密克戎引发重症
- 德尔塔|为什么感染飙升但死亡人数有限?研究显示T细胞可防止奥密克戎引发重症
- 生活|2022,你为什么需要一块华为 WATCH GT3?
- 记忆|为什么现在的年度听歌报告,越来越好哭了?
- 符合中国|为什么要注册中文域名?中文域名很好?
- 周建明|周建明:我们为什么要强调基础科学研究?
- 智电|你的纯电MPV,为什么需要一个专业户来操刀?
- 安全|为什么我们现在不再需要杀毒软件了?
- 标准|5G很美丽,也要解好题:为什么今天必须关注5G-Advanced?
- 技术|【冬奥问“冀”】为什么说观众在观赏冬奥会时也能感受到高科技?