博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
极致PCWeb性能 —— 同步加载vs异步加载
阅读量:6256 次
发布时间:2019-06-22

本文共 720 字,大约阅读时间需要 2 分钟。

作者:Jogis

原文链接:
转载请注明原文链接以及作者信息

同步与异步加载,往往是指网络资源,像图片、样式、脚本等。本文探索在PCWeb下,同步&异步性能差距到底有多少?为何移动端的优秀方案到PCWeb,会造成性能问题?

同步加载

我们只声明单一的静态脚本资源。

异步加载

使用简单脚本发起资源请求。

结果分析

看到结果很惊诧,仅仅是一个不一样的加载方式,导致的是40ms与400ms的差异。那么,这段时间里面,浏览器到底去干啥了。

通过图示,说明了几个问题

  • HTML脚本执行优先于次于大多数插件脚本

  • 异步发起的请求,属于低优先级任务

  • 低优先级任务,容易被其他脚本执行而阻塞

  • 在PCWeb,异步加载本身在浏览器过程缓慢,而且非常容易受插件影响

同步加载,是否会受插件影响?

分析:

  • HTML解析伊始即时发起请求

  • HTML解析结束后即时接受数据包

  • 在接收数据包过程中已经开始解析

  • 在解析过程中,浏览器利用空余时间给插件执行空间

  • 一旦解析完成,下一个任务调度就是脚本的编译执行

可以看到高优先级的资源,比部分插件脚本有更高执行优先级,浏览器会“尽可能快”地加载执行。

无插件环境(类无线环境)

在插件环境下,加载会被各种插件干预,那么纯粹的异步(low)同步(high)在Webkit浏览器加载的差距是怎样的呢?我们通过切换至隐身模式,消除所有插件影响,注意需要将所有插件的”隐身可用“取消勾选。

在OSX环境下,Shift+CMD+N启用隐身模式,在某些情况有特别的妙用..

结论是:同步的高优先级获得优先系统调度,与异步加载有略微优势

结语

PCWeb下,同步加载的特性,比起异步加载有非常大的优势。在某些场景下,还有一些"绝妙"的用法。

你可能感兴趣的文章
关于CISCO asa5510防火墙端口映射配置
查看>>
2012年6月美国最佳虚拟主机提供商TOP12性能评测
查看>>
monkey详细介绍之二
查看>>
两列布局之左边固定宽度,右边自适应(绝对定位实现方法)
查看>>
4,gps信号与地图匹配算法
查看>>
python print的用法
查看>>
之字形打印矩阵
查看>>
我的世界之电脑mod小乌龟 —— 方位上的操作 lua函数集
查看>>
游戏方案
查看>>
在 Linux 下搭建 Git 服务器
查看>>
StackExchange.Redis Client(转载)
查看>>
Leetcode题目:Bulls and Cows
查看>>
bk. 2014.12.1
查看>>
CEOI2014 wall Spoiler
查看>>
UVA10391 ZOJ1825 Compound Words【SET+暴力】
查看>>
动态规划------Combination Sum IV
查看>>
[BZOJ2463][中山市选2009]谁能赢呢?
查看>>
iOS数据持久化存储之属性列表
查看>>
最后冲刺时间
查看>>
前端开发薪资之各地区对比(图文分析)
查看>>