总结一下“别人家的前端性能调优方案总结”

作为一名只会喊666的咸鱼,只能作为伸手党,参(chao)照(xi)一波别人的劳动成果来加深自己的记忆 其实是自己肚子没墨水 。既然是参照,直接进入正题吧。

避免阻塞

1. 优化HTTP请求

1 - 减少请求次数:

1. 合并代码。

2. sprite化图片。

3. 小于8kb的用base64作为src源。

4. 缓存ajax,对于每次请求返回内容都相同的ajax,可以设置cache属性进行缓存。

5. 剔除重复性的脚本。

2 - 减少请求体积:

1. 让后台dalao们使用GZIP。

2. 压缩代码,减少文件的空白字符。

3. 优化图片,压缩IMG-PNG8格式,压缩图片。

3 - 减少请求资源自带cookie的体积,也叫cookie隔离,使用CDN就好,有兴趣可以看看Cookie - Free Domains技术。

4 - 减少页面中空引用的href与src标签,因为你什么都不写,浏览器还是会对服务器发起一个空的HTTP请求,会对服务器产生一些不必要的压力。

5 - 突破请求限制,同一时刻向一个域名请求下载的并行数有限,可以使用不同域名分别存放静态资源,增大并行下载量。

6 - 使用大杀器,CDN。

7 - 不要滥用post请求,post翻译过来是邮递的意思,获取数据还是用get请求。而且在大部分浏览器中post还是有分步操作,而get是一步到位,虽然效率上差别不会很明显,但这不是混淆语义的理由。

顺便附上一个get与post区别的link: get与post的区别。

8 - css置顶,script置底,如需在头部放置script,可以使用defer与async异步的script引入。

9 - 避免使用css表达式。

10 - 使用懒加载。

11 - 减少DNS查找。每次DNS查询都会有30-120ms的耗时,可以使用DNS预加载。

12 - 减少页面重定向。每次重定向都会有资源的损耗,尽量减少不必要的重定向。

渲染

1 - 减少DOM树的深度,DOM树越深,越吃浏览器的渲染资源。尽量减少不必要的DOM层级。

2 - 优化体积过大的css文件,css体积过大需要更多的时间加载,关键的资源需要进行拆分渲染,保证首屏加载速度,提高用户体验。

3 - 避免在HTML中直接缩放图片,在HTML中直接缩放图片会使页面内容重绘,会影响页面中其他操作的效率,可能会产生卡顿。

4 - 优化js加载,耗时的script应当在html底部渲染,或者使用异步加载,与首屏无关的js也应当延迟加载。

5 - 避免使用<table>与<iframe>:

table是将整个table元素渲染完毕再一次性绘制到页面上,特别吃性能,相比而言可以用其他列表元素代替,譬如ul、dl。

iframe会因为加载源页面(即src='xxx'),而造成父级进入渲染阻塞的状态,等待iframe的源页面加完完毕才会回到父级继续往下渲染,如果是必要时,可以用异步的方式动态加载iframe。

6. 避免使用css滤镜,与css表达式,太吃性能的玩意儿暂时不要玩儿吧,浏览器hold不住。

缓存


预加载

1 - 使用DNS预解析,像天猫阿里的元信息里面都有用到:

使用dns-prefetch的姿势。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容