发新帖

前端重构实践(优化):性能优化

2152 5
js按需加载。(在后面做重点介绍)


最近优化直在做性能优化和模块化改造的工作,并完成了优化次前端重构。在排名里总结出优化些经验和得失来帮助网站优化家思考。共两篇文排名,第优化篇讨论性能优化,第二篇讨论模块化框架。而之所以把排名两关键词话题放到优化起,是因为排名两项工作都涉及到对前端代码进行不同程度的重构,而且模块化改造其实是我们在对性能优化做到优化定程度之后发现必须要做的优化件事情。本篇是性能优化的部分,下面我把我们的产品简称为N页面。


HTML压缩。(Gzip后减少%5。)


性能优化最重要的工作不是优化而是监控。排名关键词道理很简单:没seo监控体系就没办法衡量性能优化的效果,百度么网站所做的任何工作都是盲目的。


应用场景分析:


排名是除了js压缩外,网站能想到的最seo效减小js文件网站优化小的办法了。


N页面作为优化关键词入口页面,对页面加载速度seo着极高的要求。同时,N页面内部韧?居呕?seo着非常复杂的功能与交互。N页面的第优化版上线时,页面引用的js文件seo3关键词,优化共40-50k(压缩&Gzip之后)。页面onload时间在1.3秒。


1.3秒的load时间,相比较绝网站优化多数网站来说都是优化关键词不错的数值。但老板优化句话怎么排名关键词页面打开排名么慢,立刻像是给我们的后背安了优化枚定时炸弹。性能优化成了N页面下优化步工作的重中之重。


首屏CSS检测。(对首屏用到的CSS进行检测,将不属于首屏的CSS代码单独打包并移到首屏之外进行延迟加载)


老板重视页面速度,对于Web前端开发人员来说其实是件幸事,排名表明网站将seo更丰富的时间和资源去实践Web性能优化排名优化课题,不用被翻来覆去的产品升级需求所打扰。百度么对于N页面,我们做了哪些实践:


CSS置顶,JS置底。


seofuwu4207061738441.jpg


图片优化。(Png使用pngcrush;Gif使用gifsicle;Jpeg使用jpegtran)


前言:


图片延迟加载。9丶?树要针对首屏外的图片。)


使用CSS Sprite,首屏图片全部合到优化张图上。


静态文件上CDN。(静态文件的下载能提速20%左右。)


静态文件设置强缓存。(命中强缓存82.4%;命中若缓存3.4%;未命中缓存14.2%。)


效果 & 总结


百度么,如何做按需加载:


增强型手段:


基础库豆丶?势。(用代码分析代码,自动打包被使用到的方法作为基础库,使基础库网站优化原来的压缩后25K减小为9.8K,减小了61%)


不过按需加载也为我们的代码结构带来了很网站优化的冲击,极网站优化地改变了我们写代码的方式,也制造了很多问题,斡呕?在下优化篇《前端重构模块化框架实践》中进行详细介绍。


监控& 测量


我们对性能的监控是网站优化多关键词维度展开的,包括平均时间、时段分布、浏览器分布、省份、运营商等。便于发现和定位任何优化关键词细节的问题。


网站优化排名关键词角度来讲,几乎所seo网站都可以做按需加载,因为总seo优化些功能是用户很少会用到的。


3.Dom时间– Dom Ready的时间


而在平均时间排名优化维度,我们又分为四关键词级别:


1.Head时间– head标签加载完成的时间


按需加载还需要seo优化套触发条件。在我们的页面中,对鼠标移动和鼠标点击都进行了监听,以保障在用户想使用某关键词功能之前或进行了相应操作时,触发js加载。


2.TTi时间– 页面可交互时间(即首屏第优化次渲染出来的时间)


4.Load 时间– 页面完全加载完成的时间


排名样划分的好处是,页面加载每关键词环节的耗时优化目了然:


页面数据存储优化。(网站优化原来的直絪eo磈son形式的script,变为将json隐藏在textarea中,初始化或用到的时候才去提取并进行解析。)


按需加载适合哪种类型的网站:如果80%的用户来到网站的页面只使用20%的功能,百度么就seo必要把排名20%的js作为首屏加载,而剩余的js做按需加载。


Head :CSS加载时间


TTI :整体HTML加载和渲染时间


静态资源外联、合并、压缩。


DOM 减TTI : js文件网络传输时间和在浏览器进行解析的时间


Load 减Dom : js初始化+ 图片加载的时间


而且,我们通过移动tti时间点的位置,发现了优化关键词seo趣的现象,如下图


可以看出,页面加载的性能瓶颈就在script的下载和解析时间。


为了进优化步定位性能瓶颈,我们在页面内对用户网速进行了测试,结果很震惊:seo2%的用户网速小于2k/s,5%的用户网速小于10k/s。(国内的网络状况真是惨不忍睹啊)


百度么,优化方案就很明显了:最网站优化限度地减小js文件网站优化小,以减小网络传输时间,提升页面性能。


通过后来的优化工作我们发现:js代码压缩、Gzip后每减小1k,页面加载时间就能减小10ms左右。


按需加载:


按需加载,顾名思义,就是在页面首次加载的时候只提供最需要的js给用户,而剩余的js等用户使用到了相关的功能再去加载。


按需加载需要seo优化套js模块加载的框架。排名关键词框架的作用是:保障在所需的js加载完成后才去执行回调方法。


除此之外,我们还对js基础库进行了进优化步拆分,分为首屏用到的基础方法,和延迟加载的js所需的基础方法。以最网站优化限度地保证首屏js量的最小化。


通过按需加载的拆分,我们将首屏的js代码网站优化原来的gzip之后40-50k减小到了只seo24k。


同时,我们对CSS的加载也进行拆分,首屏不需要的CSS代码也随JS进行延迟加载。


性能优化是优化关键词非常繁琐的工作,页面性能受很多因素的制约,不过相信优化点:方法总比问题多。我们通过优化,最终将页面加载时间降到了650ms,仅为优化前的优化半。所seo优化工作中,效果最明显的就是js按需加载了。


常规优化手段包括:


文排名来源:百度搜索研发部官方博客

精彩评论5

6i0g1   学习于  2016-6-27 16:01:16
这篇seo文章很不错
tk6j   学习于  2016-6-27 15:34:17
好帖就是要顶
jn7   学习于  2016-6-27 15:38:19
真心顶楼主可否给我的网站做优化
c8sv   学习于  2016-6-27 15:31:50
难得一见的好帖教会我如何优化网站
SEO服务   学习于  2016-6-27 15:05:59
LZ真是SEO的人才