Submit Search
Upload
UC奇趣百科性能优化分享
•
3 likes
•
2,313 views
L
linx4200
Follow
博文: http://xinranliu.me/2015-05-22-qiqu-performance/ UC 奇趣百科: http://qiqu.uc.cn
Read less
Read more
Internet
Report
Share
Report
Share
1 of 39
Download now
Download to read offline
Recommended
Java内存管理问题案例分享
Java内存管理问题案例分享
bluedavy lin
HBase@taobao for 技术沙龙
HBase@taobao for 技术沙龙
bluedavy lin
MogileFS
MogileFS
Wei Weng
Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇
bluedavy lin
FtnApp 的缩略图实践
FtnApp 的缩略图实践
Frank Xu
Sun jdk 1.6 gc
Sun jdk 1.6 gc
bluedavy lin
淘宝分布式数据处理实践
淘宝分布式数据处理实践
isnull
Seqdb存储引擎
Seqdb存储引擎
luckywhu
Recommended
Java内存管理问题案例分享
Java内存管理问题案例分享
bluedavy lin
HBase@taobao for 技术沙龙
HBase@taobao for 技术沙龙
bluedavy lin
MogileFS
MogileFS
Wei Weng
Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇
bluedavy lin
FtnApp 的缩略图实践
FtnApp 的缩略图实践
Frank Xu
Sun jdk 1.6 gc
Sun jdk 1.6 gc
bluedavy lin
淘宝分布式数据处理实践
淘宝分布式数据处理实践
isnull
Seqdb存储引擎
Seqdb存储引擎
luckywhu
Sun JDK 1.6内存管理 -调优篇
Sun JDK 1.6内存管理 -调优篇
bluedavy lin
[Python - Deep Learning] Data generator
[Python - Deep Learning] Data generator
Sean Yu
云计算环境中Ssd在cassandra测试的性能表现
云计算环境中Ssd在cassandra测试的性能表现
july19850903
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析
iammutex
Jvm memory
Jvm memory
benewu
Ceph bluestore-tiering-2018-11-15
Ceph bluestore-tiering-2018-11-15
Jiaying Ren
准实时海量数据分析系统架构探究
准实时海量数据分析系统架构探究
Min Zhou
Java Concurrent Optimization: Concurrent Queue
Java Concurrent Optimization: Concurrent Queue
Min Zhou
线上问题排查交流
线上问题排查交流
Edward Lee
Lamp优化实践
Lamp优化实践
zhliji2
Mysql基于ssd flashcache实践
Mysql基于ssd flashcache实践
gettyying
Operation and Maintenance of Large-Scale All-Flash Memory Ceph Storage Cluste...
Operation and Maintenance of Large-Scale All-Flash Memory Ceph Storage Cluste...
Ceph Community
Ceph in UnitedStack
Ceph in UnitedStack
Rongze Zhu
Java常见问题排查
Java常见问题排查
bluedavy lin
Hantuo openstack
Hantuo openstack
OpenCity Community
Storm
Storm
Phoenix Zhang
Mysql fast share
Mysql fast share
rfyiamcool
Distributed Data Analytics at Taobao
Distributed Data Analytics at Taobao
Min Zhou
基于闪存的一种事务恢复方法
基于闪存的一种事务恢复方法
july19850903
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
zhen chen
jiaju.com首页前端优化一期报告
jiaju.com首页前端优化一期报告
zhangsuoyong
Java垃圾收集原理
Java垃圾收集原理
yin gong
More Related Content
What's hot
Sun JDK 1.6内存管理 -调优篇
Sun JDK 1.6内存管理 -调优篇
bluedavy lin
[Python - Deep Learning] Data generator
[Python - Deep Learning] Data generator
Sean Yu
云计算环境中Ssd在cassandra测试的性能表现
云计算环境中Ssd在cassandra测试的性能表现
july19850903
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析
iammutex
Jvm memory
Jvm memory
benewu
Ceph bluestore-tiering-2018-11-15
Ceph bluestore-tiering-2018-11-15
Jiaying Ren
准实时海量数据分析系统架构探究
准实时海量数据分析系统架构探究
Min Zhou
Java Concurrent Optimization: Concurrent Queue
Java Concurrent Optimization: Concurrent Queue
Min Zhou
线上问题排查交流
线上问题排查交流
Edward Lee
Lamp优化实践
Lamp优化实践
zhliji2
Mysql基于ssd flashcache实践
Mysql基于ssd flashcache实践
gettyying
Operation and Maintenance of Large-Scale All-Flash Memory Ceph Storage Cluste...
Operation and Maintenance of Large-Scale All-Flash Memory Ceph Storage Cluste...
Ceph Community
Ceph in UnitedStack
Ceph in UnitedStack
Rongze Zhu
Java常见问题排查
Java常见问题排查
bluedavy lin
Hantuo openstack
Hantuo openstack
OpenCity Community
Storm
Storm
Phoenix Zhang
Mysql fast share
Mysql fast share
rfyiamcool
Distributed Data Analytics at Taobao
Distributed Data Analytics at Taobao
Min Zhou
基于闪存的一种事务恢复方法
基于闪存的一种事务恢复方法
july19850903
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
zhen chen
What's hot
(20)
Sun JDK 1.6内存管理 -调优篇
Sun JDK 1.6内存管理 -调优篇
[Python - Deep Learning] Data generator
[Python - Deep Learning] Data generator
云计算环境中Ssd在cassandra测试的性能表现
云计算环境中Ssd在cassandra测试的性能表现
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析
Jvm memory
Jvm memory
Ceph bluestore-tiering-2018-11-15
Ceph bluestore-tiering-2018-11-15
准实时海量数据分析系统架构探究
准实时海量数据分析系统架构探究
Java Concurrent Optimization: Concurrent Queue
Java Concurrent Optimization: Concurrent Queue
线上问题排查交流
线上问题排查交流
Lamp优化实践
Lamp优化实践
Mysql基于ssd flashcache实践
Mysql基于ssd flashcache实践
Operation and Maintenance of Large-Scale All-Flash Memory Ceph Storage Cluste...
Operation and Maintenance of Large-Scale All-Flash Memory Ceph Storage Cluste...
Ceph in UnitedStack
Ceph in UnitedStack
Java常见问题排查
Java常见问题排查
Hantuo openstack
Hantuo openstack
Storm
Storm
Mysql fast share
Mysql fast share
Distributed Data Analytics at Taobao
Distributed Data Analytics at Taobao
基于闪存的一种事务恢复方法
基于闪存的一种事务恢复方法
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
Similar to UC奇趣百科性能优化分享
jiaju.com首页前端优化一期报告
jiaju.com首页前端优化一期报告
zhangsuoyong
Java垃圾收集原理
Java垃圾收集原理
yin gong
Java垃圾收集原理
Java垃圾收集原理
yin gong
Modern Web Development Introduction
Modern Web Development Introduction
John Chou
腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨
George Ang
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事
Chieh (Jack) Yu
缓存基础
缓存基础
dynamiclu
数据库与ssd的实践与探索-2011数据库技术大会
数据库与ssd的实践与探索-2011数据库技术大会
freezr
老舊web上雲端
老舊web上雲端
Ching Yi Chan
Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)
ykdsg
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
涛 吴
如何利用 www.webpagetest.org 進行網頁效能分析與改進建議 (真實案例)
如何利用 www.webpagetest.org 進行網頁效能分析與改進建議 (真實案例)
Cyril Wang
Beyond rails server
Beyond rails server
Michael Chen
客户端存储与计算
客户端存储与计算
xiaotao ning
腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨
areyouok
腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨
topgeek
Sun jdk 1.6内存管理 -使用篇-毕玄
Sun jdk 1.6内存管理 -使用篇-毕玄
锐 张
Crawler pieces
Crawler pieces
Yue Tian
Mongodb Blockstore memory and system tuning
Mongodb Blockstore memory and system tuning
YI-CHING WU
Something about Kafka - Why Kafka is so fast
Something about Kafka - Why Kafka is so fast
ViSenze - Artificial Intelligence for the Visual Web
Similar to UC奇趣百科性能优化分享
(20)
jiaju.com首页前端优化一期报告
jiaju.com首页前端优化一期报告
Java垃圾收集原理
Java垃圾收集原理
Java垃圾收集原理
Java垃圾收集原理
Modern Web Development Introduction
Modern Web Development Introduction
腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事
缓存基础
缓存基础
数据库与ssd的实践与探索-2011数据库技术大会
数据库与ssd的实践与探索-2011数据库技术大会
老舊web上雲端
老舊web上雲端
Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
如何利用 www.webpagetest.org 進行網頁效能分析與改進建議 (真實案例)
如何利用 www.webpagetest.org 進行網頁效能分析與改進建議 (真實案例)
Beyond rails server
Beyond rails server
客户端存储与计算
客户端存储与计算
腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨
腾讯大讲堂08 可扩展web架构探讨
Sun jdk 1.6内存管理 -使用篇-毕玄
Sun jdk 1.6内存管理 -使用篇-毕玄
Crawler pieces
Crawler pieces
Mongodb Blockstore memory and system tuning
Mongodb Blockstore memory and system tuning
Something about Kafka - Why Kafka is so fast
Something about Kafka - Why Kafka is so fast
UC奇趣百科性能优化分享
1.
奇趣百科性能优化分享 Chrome DevTools 中的
Timeline 、 Profiles 等工具使用介绍
2.
UC 奇趣百科
3.
ELF + GRUNT VUE
+ SCRAT
4.
卡
5.
占用内存过多
6.
Profiles 利用 Profiles 工具发现潜在内存问题 Collect
Javascript Cpu Profile: 获取一段时间内页面执行过的函数所花费的 时间 Take Heap Snapshot: 获取当前页的堆快照 Record Heap Allocations: 记录某段时间堆的使用情况
7.
VS Take Heap Snapshot 改版前后内存对比 改版前 首屏占用内存9.4MB 加载30次数据后占用内存10.6MB 改版前 首屏占用内存13.8MB 加载30次数据后占用内存69.9MB
8.
内存泄露! 😱
9.
Summary 视图 名词解释 Shallow Size 对象直接持有的内存大小,通常情况下应该只有字符串和数组类型可能拥有一个较大的 Shallow
Size Retained Size 当前对象所引用的其他对象占用的内存大小. 当前对象被销毁时, 这一部分的内存会被释放.
10.
Summary 视图 找出内存泄露的原因
11.
Comparison 视图 对比首屏和加载30次数据后的内存差异
12.
13.
For example ListItemImg 组件: •
大量的 Vue 定义的对象: directives, watchers 等 • 大量的 getter 和 setter 方法等
14.
同一页面中被大量使用的组件尽量不要嵌套组件, 不然内存占用会随着组件的增多而快速上升.
15.
优化方案 卡片内不使用组件, 一个卡片一个组件 卡片的事件托管到列表上
16.
优化结果 优化前70MB, 优化后40MB, 此处应有掌声
👏👏👏 300张卡片占用内存40M左右, 下降了39.6%
17.
Keep going
18.
越往下加载, DOM 越多,
想不卡都难! 😢
19.
Inspiration — 手机淘宝
20.
优化方案 移除视窗外不可见的DOM. 也就是说列表最多只有30张卡片, DOM不会随着页面越滚动到下面越多.
21.
优化结果 优化前40MB, 优化后25MB 30张卡片占用内存25M左右, 下降了21.4%
22.
换个角度
23.
Timeline Timeline 控制板介绍
24.
Timeline - Frames Frames
模式介绍 一帧(一条柱子)代表了在一帧(GPU渲染画面)内展现内容所要完 成的工作,包括执行JS,处理事件,更新 DOM, 改变样式和布局还 有绘制页面.
25.
60FPS
26.
显示器刷新频率: 60Hz GPU渲染页面频率: 60FPS
27.
Frames 往下滚动加载两次数据的 Frames 情况 •蓝色:
网络和HTML解析 •黄色: JavaScript 脚本运行 •紫色: 样式重计算和布局 ( Layout , Recalculate Style, Update Layer tree) •绿色: 绘制和合成 ( Paint , Composite Layers)
28.
超过60FPS的柱子一般包括多个 Image Decode 事件 Image
Decode 事件在一个图片资源完成解码后 触发 大量的图片加载完成后进而大量触发 Paint 事件 Paint事件是合并后的层被绘制到对应显示区域后 触发
29.
图片分开加载, 把Paint事件分散, 高(高于60FPS) 的柱子拆成多个矮(低于60FPS)的柱子,
这样就能 进一步提升流畅度.
30.
图片懒加载
31.
优化结果 实现了图片懒加载的 Frames 情况 绝大部分
Frame 达到60FPS, 实际操作流畅
32.
但是
33.
图片懒加载会让用户在整体上觉得卡顿, 从用户体验的角度出发, 我们的优化方案最终并没有使用图片懒加载.
34.
• 避免使用 border-radius,
box-shadow, 渐变等性能杀手 其他优化 细小却同样重要 • 动画尽量使用 opacity 和 transform 完成
35.
性能优化 合并 Vue 组件 内存占用减少40% 移除视图外的
DOM 内存占用进一步减少21% 图片懒加载 优化 Frames 情况, 实际操作流畅
36.
最后的广告 👀
37.
http://xinranliu.me
38.
Q & A
39.
THX 🙇
Download now