前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

为什么每次进度条卡在1%就不动了?

很多时候我们在网页下载东西时,看着下载的进度条都是前面“咻”一下很快,但是后面最后1%就不动了,甚至时还要等上很久,这是为什么呢?

事实上,它不仅仅是在剩下最后1%的时候才不动,而是浏览器不知道它加载了多少。换句话说,浏览器的进度条起到的只是心理安慰的作用,浏览器的进度条时按照设定好的速度在进行的。如果提前加载完,那么就会突然加速到终点,但是如果加载没有完成,它就会越来越慢,甚至是卡在99%不动了。那么为什么浏览器不知道它们的加载百分比?这其实和网页的加载原理有关。

当我们打开一个网页时,我们将从服务器收到一个带有HTML后缀的文件,其中包含网页的整体框架信息。当使用浏览器打开网页后,按F12键可查看网站的HTML文件。除HTML文件外,大多数网页中的一些文件用于补充HTML中的内容,如CSS文件(层叠样式表)、JavaScript文件、图片文件等,这些补充内容列在HTML文件中。

通常,浏览器是在显示网页时是边解析边请求的模式。浏览器从一开始解析HTML文件,可能解析到某一行,此时,HTML文件告诉浏览器:“嘿,这里需要一个css文件,你快找服务器把这个搞来。”当服务器找到CSS文件并开始解析时,CSS文件指示服务器请求另一个JavaScript文件。然后不断的重复。

除此之外,html还有一万种方式来“折磨”浏览器。可能浏览器在前面辛辛苦苦渲染好了网页的某个元素,然后在后面运行某个JavaScript文件时,它又告诉浏览器:“你快去把刚刚渲染好那个东西给我隐藏了”。然后因为少了个元素,刚刚加载好的部分又得重新调整。

所以浏览器在接收到最开始的html文件时,浏览器是无法准确的预估自己到底需要向服务器请求多少文件,浏览器别无选择地任劳任怨的工作,不知道什么时候才能做完这些东西,直到html文件的结束标识的到来,也有可能永远也等不到的到来。


发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言