WebKit网页加载进度算法研究(一)

   常用手机浏览器的人都会注意到,在加载网页时会有这样的现象:

   1. 若网页非常简单,则进度条会在开始跳几下,然后直接跳到最后

   2. 若网页非常复杂,则进度条会卡在约90%的位置很久,而加载不完。

   特别是后者造成了非常差的用户体验,因为这时候用户不知道网页是否还在加载,是否还在工作。

   这些现象都是由WebKit内部的加载进度算法造成的,该算法在ProgressTracker类中,关于这个类,这篇文章有很好的说明,这里就不再重复了。

   进度更新是由网络部分触发的,当网络部分收到一个报文,就会向上要求更新进度,并且将该报文的长度(bytesReceived) 传递上去,作为一个重要参数。

   算法其实很简单,初始值设为10%,最大值设为90%。这就是为什么打开网页后,进度会直接跳出一块,而又有很多复杂网页卡在90%的原因了。

   中间这块进度的计算是通过一个简单的数学式:

   progressValue += (maxprogressValue  - progressValue )*(bytesReceived / remainingBytes)

   progressValue 是当前进度,maxprogressValue  是最大进度,即90%。 bytesReceived 本次收到的字节数。remainingBytes剩余的总字节数,这个值是估算出来的,其估算的是否准确直接决定了算法的成败。

   此计算式虽然简单,但它保证了

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值