Top Banner
新新新新新新新 新新新新新新新 李李李 2011-12-22
36

百度新首页性能优化

Jun 20, 2015

Download

Technology

Welefen Lee
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 百度新首页性能优化

新首页性能优化新首页性能优化

李成银

2011-12-22

Page 2: 百度新首页性能优化

性能的重要性性能的重要性

百度的首页

互联网用户的入口

传统首页非常快 (560ms)

性能对产品的影响

Page 3: 百度新首页性能优化

性能对产品的影响性能对产品的影响

Page 4: 百度新首页性能优化

性能优化的前提性能优化的前提

监控

性能监控平台 (http://fe.baidu.com/wpo)

Page 5: 百度新首页性能优化

性能监控平台性能监控平台

通过 JS 在页面埋点,收集页面在 head 、 tti

、 dom 、 load 等时段的时间情况 发送到 og 平台,运算后在性能监控平台进行

多维度的展现 包括:平均时间、时间段、浏览器、省份、运

营商、耗时、趋势等

Page 6: 百度新首页性能优化

性能监控平台性能监控平台

Page 7: 百度新首页性能优化

性能监控平台性能监控平台

Page 8: 百度新首页性能优化

性能监控平台性能监控平台

Page 9: 百度新首页性能优化

优化的目标优化的目标

Page 10: 百度新首页性能优化

优化手段优化手段

常规优化手段

增强型优化手段

基于用户行为分析的优化手段

Page 11: 百度新首页性能优化

常规优化手段常规优化手段

静态资源外链、合并、压缩 背景图片优化

- Png 使用 pngcrush

- Gif 使用 gifsicle

- Jpeg 使用 jpegtran

静态资源上 CDN

- 可以提速 20% 左右

Page 12: 百度新首页性能优化

常规优化手段常规优化手段

静态资源设置强缓存 - 命中强缓存 82.4%

- 命中弱缓存 3.4%

- 未命中缓存 14.2%

使用 css sprites

….

Page 13: 百度新首页性能优化

结果结果Tti 时间放在 script 之后

Tti 时间放在 script 之前

Page 14: 百度新首页性能优化

结论结论

性能的主要瓶颈在网络传输

Page 15: 百度新首页性能优化

增强型优化手段增强型优化手段

支持 Smarty 的 HTML 压缩

图片延时加载

tangram 最优定制

CSS 极限压缩

Page 16: 百度新首页性能优化

支持支持 SmartySmarty 的的 HTMLHTML 压缩压缩

Fl - 支持模版语法的 html/css/js 检测,美化,压缩等工具 - https://github.com/welefen/fl

上线前编译时进行 - 不影响开发方式

gzip 后减少 5%

Page 17: 百度新首页性能优化

支持支持 SmartySmarty 的的 HTMLHTML 压缩压缩

Page 18: 百度新首页性能优化

图片延时加载图片延时加载1 、导航 icon

2 、 app 的 icon

3 、 feed 用户头像

4 、 feed 中图片

Page 19: 百度新首页性能优化

TangramTangram 最优定制最优定制

• 开发时使用全部的 tangram

• 上线前通过最优定制工具分析 JS 代码中用到的 tangram 方法

• 将这些方法打包,替换全部的 tangram

• YUI 压缩后由 76k -> 29K, 减小 62%

• Gzip 后由 25K -> 9.8K, 减小 61%

Page 20: 百度新首页性能优化

TangramTangram 最优定制最优定制

http://fe.baidu.com/welefen/tangram-codesearch/codesearch.html

Page 21: 百度新首页性能优化

CSSCSS 极限压缩极限压缩

• CSS 文件下载过程中页面空白

• CSS 文件大小直接影响页面白页的时间

• CSS 中的 class 名字一般都是语义话,比较长

• 同时 HTML 和 JS 中引用的地方也要将长名字写一份

Page 22: 百度新首页性能优化

CSSCSS 极限压缩极限压缩

• 通过工具分析 HTML 里用到的 CSS

• JS 使用 data-class=“cls1 cls2” 的方式

• 建立压缩字典

• 压缩 HTML 和 CSS 对应的 class

• 同时可以去除冗余的 css

Page 23: 百度新首页性能优化

CSSCSS 极限压缩极限压缩

Page 24: 百度新首页性能优化

CSSCSS 极限压缩带来的问题极限压缩带来的问题

• 对于无跨模块引用 css 的有效

• 目前很多 css 在 js 里用到,之前没有使用data-class 的方式,所以该功能暂时没有开启

• 不过去除了冗余的 css 达 2K 多 (gzip 前 )

Page 25: 百度新首页性能优化

基于用户行为的分析优化基于用户行为的分析优化

鼠标移动行为

鼠标点击行为

交互行为

数据分析的加载方式

Page 26: 百度新首页性能优化

鼠标移动行为鼠标移动行为

鼠标移动行为

- 用户鼠标移动到模块内,加载模块扩展的 js 和 css

Page 27: 百度新首页性能优化

鼠标点击行为鼠标点击行为

Page 28: 百度新首页性能优化

交互行为 交互行为 – – 编辑模式编辑模式

Page 29: 百度新首页性能优化

数据分析的加载方法数据分析的加载方法

• Feed 在首屏占有 feed 的用户只有 13%

• 首次只加载发送 feed ajax 请求的 js

• 用户滚屏到 feed 时并行加载异步数据、 JS文件、 CSS 文件

Page 30: 百度新首页性能优化

优化历程优化历程

Page 31: 百度新首页性能优化

当前状态当前状态

Page 32: 百度新首页性能优化

当前状态当前状态

Page 33: 百度新首页性能优化

更多的优化更多的优化

• 用户网速测试

Page 34: 百度新首页性能优化

更多的优化更多的优化

• 监控平台支持 abtest 模式性能监控• 考虑对慢网速的用户将外链的 css 放在搜

索框后面• 考虑继续拆解 JS 基础库,减少初始化加载

文件大小• 考虑使用 performance api 拿到更多的性能

数据• …

Page 35: 百度新首页性能优化

优化优化

性能优化,永无止境

Page 36: 百度新首页性能优化

Q&AQ&A

Q&A