如何使用Chrome Timeline 工具(译)
【原文地址】https://developers.google.com/web/tools/chrome-devtools/profile/evaluate-performance/timeline-tool
该文章介绍了 Timeline 工具的基本组成以及如何使用该工具对页面事件进行记录,具体的调试细节还得更具读者的具体使用场景和调试目的对数据进行分析得到解决方案,该文章算是对 Chrome Timeline 工具的一个使用说明书。
使用 Chrome DevTools 的 Timeline 面板记录程序运行时的所有行为,并用于加以分析是解决程序性能问题的最好方案。

目录结构
- Timeline面板概括(Timeline panel overview)
- 开始一次记录(Make a recording)
- 查看记录详细信息(View recording details)
- 在记录期间获取页面截图信息(Capture screenshots during recording)
- 分析 JavaScript(Profile JavaScript)
- 分析 painting(Profile painting)
- 在记录中查找(Search records)
- Zoom in on a Timeline section
- 保持和载入记录(Save and load recordings)
通过 Timeline 记录页面加载后所发生的各种事件和交互。
在 Overview 区域查看 FPS,CPU 和 网络请求信息
点击 Flame Chart 上的一个事件记录查看其详细信息
放大某一段记录,更利于分析
Timeline panel overview
Timeline 面板由一下 4 个子面板构成:
控制面板(Controls)
开启记录,停止记录,配置记录期间需要记录那些内容。概括(Overview)
对页面表现(行为)的一个概述。Flame Chart
可视化 CPU 堆栈(stack)信息记录
在 Flame Chart 面板上你可能看到三根垂直的线,蓝线代表 DOMContentLoaded 事件,绿线代表渲染开始的时间( time to first paint),红线代表 load 事件。详细信息(Detail)
当有具体事件被选择时,该面板展示这个事件的更多详细信息。如果没有事件被选择,该面板展示当前所选时间段的一些信息。

Overview pane
概括区域由一下三个图形记录组成:
FPS. Frames Per Second.
绿色的柱越高, FPS 值也越高。FPS 图表上方的红色小块指明了长帧(long frame,较慢渲染?),这些 long frame 可能是卡顿(jank)CPU. CPU Resources.
这个面积图(area chart)表明了哪种事件在消耗 CPU 资源。NET.
每种不同颜色的条代表一种资源。这个条越长表明获取( retrieve )该资源所花的时间越长。每个条中的浅色部分代表等待时间(资源请求被发送到收到第一个响应字节的时间),深色部分代表文件传输时间(从收到第一个字节到这个资源完全被下载好)
蓝色 代表 HTML 文件,黄色 代表 Script 文件,紫色 代表 Stylesheets 文件, 绿色 代表 Media 文件,灰色 代表其他资源。

Make a recording
记录一个页面的loading过程
打开 Timeline 面板,在当前 Tab 打开你想要记录的页面,然后刷新该页面,Timeline 面板会自动的记录一个页面的 reload。记录页面上的交互
打开 Timeline 面板,点击该面板左上的 Record 按钮( ● ) 或者通过快捷键(Cmd + E/Ctrl + E) 开始记录。
当 Timeline 正在记录页面事件时,Record 按钮会变成红色的。
在记录期间进行一些想要分析的页面交互,当再次发送 Record 命令(●按钮,或键盘快捷方式)时会停止这次记录。
当记录停止过后,DevTools 会自动去分析那块内容是你最关心的,并且会自动的放大(选择)那块区域。
Recording Tips:
- Keep recordings as short as possible.
保持记录内容尽可能的少,通常越短的记录越利于分析。 - Avoid unnecessary actions.
避免一些你并不关心的无用的事件(比如:鼠标点击,网络加载)。比如,你希望分析的是点击 Login button 后的处理事件,就不要去滚动当前页面,加载更多的图片,或其他一些无关事件。 - Disable the browser cache.
当记录分析一些网络相关事件时,禁用浏览器的缓存是个不错的主意。你可以在 DevTools Settings 面板或者 Network conditions 面板禁用缓存。 - Disable extensions.
Chrome 浏览器扩展会在记录中添加一些不相关的 noise 到 Timeline 记录中。可以通过打开 隐身模式 或者创建一个新的浏览器用户来确保你的Chrome环境下没有扩展插件。
View recording details
当你在 Flame Chart 中选择一个具体的事件,Detail 区域会展示一些关于该事件的额外信息。

上图中的一些 tab,比如 Summay 对所有的事件都会有对应的展示信息,其他的一些 tab 只有对于某些特定的事件类型才有展示内容。可以通过查看 Timeline event reference 查看 tab 和事件类型的关系。
Capture screenshots during recording
TImeline 面板还可以在记录期间对页面进行截屏重现,这个特性就像幻灯片查看一样。
如果要对一个页面的进行截屏重现,现在 控制区域(Controls pane) 中勾选 Screenshots,然后开始记录,完成记录后,页面的截屏会展现在 概述面板(Overview pane)下方。

将鼠标移动到 概述区域 或 截屏 上可以查看到当前点上页面截屏放大的图像,左右移动鼠标来模拟记录期间页面的动态效果。
Profile JavaScript
在开始记录之前,在控制区域(Control pane)勾选 JS Profile,这样记录的时候就会去记录 JavaScript stacks 相关信息。这时你的 Flame Chart 中将会记录任何一个被调用过的方法。

Profile painting
和 Profile JavaScript 一样,你需要先在控制区域勾选 Paint 来在后面的记录中记录 Paint 事件,此时,当你在记录结果中选择一个 Paint 事件后,Paint Priflter 这个 tab 将会出现在 Details 区域,该 tab 将会展示更多当前关于当前事件的信息。

Rendering settings
打开 DevTools 的主菜单,选择 More tools > Rendering settings来配置一些 rendering settings,这些可能会对调试渲染问题很有帮助。开启 rendering settings 后,会在 Console drawer 旁边添加一个 Rendering tab。如果 Console drawer 没有展现在页面上,可通过 ESC 使其展示出来。

Search records
查看记录的事件时,你可能只希望关注于某一类型的事件,比如你只是希望查看每个 Parse HTML 事件的详细信息。
通过使用 Cmd + F/Ctrl + F快捷键,在 Timeline 区域中打开 搜索工具栏,在搜索工具栏中输入你想分析的事件类型,比如 Event.
工具栏只会将搜索条件作用在当前选择的时间表内的事件,在时间表外的事件都不会显示在结果中。
搜索工具栏中的上下箭头可以帮助你按事件发生的先后顺序查看过滤后的事件的详细信息。第一条记录代表当前选区最先发生的事件,最后一条记录代表当前选区最后发生的事件。每次点击上下箭头,就会选择一个新的事件,所以你可以在 Details 面板查看这个事件的具体信息。(点击上下箭头和在 Flame Chart 选择一个事件是等效的)

Zoom in on a Timeline section
指定某一个 Recording 结果区域,将会更有利于对记录数据的分析。可以通过在 Overview 区域选择某一块内容,来定位到某一块 recording 数据。当在 Overview 区域选择某一块内容后,Flame Chart 会自动定位到匹配的区域,并更清楚的展示对应内容。

可以通过下面的方式来指定选择一块区域:
- 在 Overview 面板,通过鼠标拖选出关注的内容
- 通过调整 ruler 区域的灰色滑块来选出关注的内容
一旦你选择了某一块内容,你可以使用 W, A, S, D 键来调整选区,W 和 S 用来放大放小选取,A 和 D 分别向左向右移动选区。(测试中没发现具体怎么使用,通过手动选区来实现这些功能)
Save and load recordings
你可以通过在 概述面板 或 Flame Chart 区域点击鼠标左键,在弹出的菜单中选择相关选项,实现Save 和 Load recordings。

如何使用Chrome Timeline 工具(译)的更多相关文章
- Chrome 开发工具之Timeline
之前有说到Element,Console,Sources大多运用于debug,Network可用于debug和查看性能,今天的主角Timeline更多的是用在性能优化方面,它的作用就是记录与分析应用程 ...
- Chrome开发者工具详解(3)-Timeline面板
Chrome开发者工具详解(3)-Timeline面板 注: 这一篇主要讲解面板Timeline,参考了Google的相关文档,主要用于公司内部技术分享.. Timeline面板 Timeline面板 ...
- chrome开发者工具浅析--timeline
一.概述 ...
- Chrome 开发者工具的Timeline和Profiles提高Web应用程序的性能
Chrome 开发者工具的Timeline和Profiles提高Web应用程序的性能 二.减少 HTTP 的请求数 当用户浏览页面时,如果我们在用户第一次访问时将一些信息一次性加载到客户端缓存, ...
- Chrome渲染分析之Timeline工具的使用
原文http://www.th7.cn/web/html-css/201406/42043.shtml Timeline工具栏提供了对于在装载你的Web应用的过程中,时间花费情况的概览,这些应用包括处 ...
- Chrome 开发工具之Timeline/Performance
之前有说到Element,Console,Sources大多运用于debug,Network可用于debug和查看性能,今天的主角Timeline(现已更名Performance)更多的是用在性能优化 ...
- 【译】在 Chrome 开发者工具中调试 node.js
原文链接 : Debugging Node.js in Chrome DevTools 原文作者 : MATT DESLAURIERS 译文出自 : 掘金翻译计划 译文链接 : https://git ...
- Chrome开发者工具不完全指南:(三、性能篇)
卤煮在前面已经向大家介绍了Chrome开发者工具的一些功能面板,其中包括Elements.Network.Resources基础功能部分和Sources进阶功能部分,对于一般的网站项目来说,其实就是需 ...
- Chrome开发者工具不完全指南(四、性能进阶篇)
前言 Profiles面板功能的作用主要是监控网页中各种方法执行时间和内存的变化,简单来说它就是Timeline的数字化版本.它的功能选项卡不是很多(只有三个),操作起来比较前面的几块功能版本来说简单 ...
随机推荐
- 几种常见算法js
没有系统地总结过js算法,虽然在项目中陆陆续续的也用过好多算法,有一次去一家公司面试的时候,面试官说想谈谈算法,有点懵了,所以接下来的面试中谈的也有点被动,避免下次再碰到这种情况,今天决定好好的总结下 ...
- awk(1)-简述
1.概述 AWK is a programming language designed for text processing and typically used as a data extract ...
- 深入理解 C 语言的函数调用过程
来源: wjlkoorey 链接:http://blog.chinaunix.net/uid-23069658-id-3981406.html 本文主要从进程栈空间的层面复习一下C语言中函数调用的具体 ...
- 优先队列 :Priority Queue
PriorityQueue是从JDK1.5开始提供的新的数据结构接口,它是一种基于优先级堆的极大优先级队列.优先级队列是不同于先进先出队列的另一种队列. 每次从队列中取出的是具有最高优先权的元素.如果 ...
- 自适应布局,响应式布局以及rem,em区别
一.自适应和响应式 先说共同点: 两者都是因为越来越多的 移动设备( mobile, tablet device )加入到互联网中来而出现的为移动设备提供更好的体验的技术.用技术来使网页适应从小到大( ...
- javascript设计模式之观察者模式
观察者模式又称发布/订阅模式 publish/subscribe 它是一种一对多的关系,让多个观察者对象同时监听某一主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得他们能够自动 ...
- HTML5 地理位置定位(HTML5 Geolocation)原理及应用
地理位置(Geolocation)是 HTML5 的重要特性之一,提供了确定用户位置的功能,借助这个特性能够开发基于位置信息的应用.今天这篇文章向大家介绍一下 HTML5 地理位置定位的基本原理及各个 ...
- 浅谈P NP NPC
P问题:多项式时间内可以找到解的问题,这个解可以在多项式时间内验证. NP问题:有多项式时间内可以验证的解的问题,而并不能保证可以在多项式时间内找到这个解. 比如汉密尔顿回路,如果找到,在多项式时间内 ...
- 关于C#操作数据库ExecuteNonQuery()的返回值问题
) { retValue = AccessCon.ExecuteSql(sql = "update salesData set sellingPrize='" + man.Sell ...
- [BCB] C++ Builder 绘图 绘制直线 —— 基于像素
大三的这前半个学期了,又遇上了这个精通(滑稽) Delphi的老师,人还挺好的其实. 关于他对分辨率的吐槽呀,对Delphi的赞美啊,都是非常幽默的.另外我倒是很欣赏他对他的笔记本的保养[dell i ...