也谈内联脚本的位置对性能的影响

看了两篇文章(内联脚本的位置对性能的影响Positioning Inline Scripts ),对自己的常规习惯有些颠覆,将信将疑,为了解开疑惑做了测试,测试代码如下:  

测试结果

      页面加载所需时间(不包括图片用时),毫秒:

script 放在style后 
ie6 :    3250 3266 3141 3140 3250 3281 3219 3234                 
ff3.6  :  3094  和发放在之前基本相同
script 放在style前 
ie6   :  3203 3250 3282 3187 3219 3141 3297  3266                    
ff3.6  : 3098 3017 3137 3121 3098 3127 3157  3257 3287

 

分析

      原文给出的分析:所有主流浏览器都会保持CSS和JavaScript的顺序。在样式表完全下载、解析及应用之后,内联脚本才能执行。
同时,必须在内联脚本执行后,剩余资源才能下载。这就使得,放在样式表和内联脚本之后的资源,下载被阻塞了。

      从测试数据看script 放在style前后基本没什么差别。CSS和JavaScript确实是顺序加载,但内联脚本是否在样式表应用之后才执行,IE6和FF不同。IE6是先执行的然后在叠加应用样式表,FF则是在样式表应用之后才执行的。这点可以从  
     debug("["+formatDate(start)+"]"+"HTML start");
     document.write("<div id='test11'>测试</div>");    
的执行可以看出,IE6先执行,过了3秒才给test11叠加样式,而FF卡了三秒才执行,且test11的输出和样式应用是同步的。

     不考虑浏览器差异从原文的分析推理,内联脚本在样式表应用之后才能执行, 内联脚本执行肯定会暂停剩余资源的加载,内联脚本放在哪执行都会暂停资源下载,那么就应该先保证样式的加载应用,避免脚本执行受阻。

     但是岁月如歌说的100ms的时间差可能处在什么地方,怎么后面的资源就并行下载了呢?我觉得可能是这样,内联脚本放在style前面,提前预解析脚本挂起执行,这样后面资源的加载稍微提前。

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值