极致 PCWeb 性能 —— 同步加载 vs 异步加载

2017-06-22 01:14:18 +08:00
 yesvods

作者:Jogis

原文链接: https://github.com/yesvods/Blog/issues/12

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

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

同步加载

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

<script src="./react.js"><script>

异步加载

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

<script>
	var s = document.createElement('script')
	s.src="./react.js"
	document.body.appendChild(s)
</script>

结果分析

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

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

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

分析:

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

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

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

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

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

结语

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

1786 次点击
所在节点    前端开发
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/370187

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX