如何使用Chrome Timeline 工具(译)

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

使用 Chrome DevTools 的 Timeline 面板记录程序运行时的所有行为,并用于加以分析是解决程序性能问题的最好方案。

timeline-panel

目录结构

  • 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 个子面板构成:

  1. 控制面板(Controls)
    开启记录,停止记录,配置记录期间需要记录那些内容。

  2. 概括(Overview)
    对页面表现(行为)的一个概述。

  3. Flame Chart
    可视化 CPU 堆栈(stack)信息记录
    在 Flame Chart 面板上你可能看到三根垂直的线,蓝线代表 DOMContentLoaded 事件,绿线代表渲染开始的时间( time to first paint),红线代表 load 事件。

  4. 详细信息(Detail)
    当有具体事件被选择时,该面板展示这个事件的更多详细信息。如果没有事件被选择,该面板展示当前所选时间段的一些信息。

timeline-annotated

Overview pane

概括区域由一下三个图形记录组成:

  1. FPS. Frames Per Second.
    绿色的柱越高, FPS 值也越高。FPS 图表上方的红色小块指明了长帧(long frame,较慢渲染?),这些 long frame 可能是卡顿(jank)

  2. CPU. CPU Resources.
    这个面积图(area chart)表明了哪种事件在消耗 CPU 资源。

  3. NET.
    每种不同颜色的条代表一种资源。这个条越长表明获取( retrieve )该资源所花的时间越长。

每个条中的浅色部分代表等待时间(资源请求被发送到收到第一个响应字节的时间),深色部分代表文件传输时间(从收到第一个字节到这个资源完全被下载好)

蓝色 代表 HTML 文件,黄色 代表 Script 文件,紫色 代表 Stylesheets 文件, 绿色 代表 Media 文件,灰色 代表其他资源。

overview-annotated

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 区域会展示一些关于该事件的额外信息。

details-pane

上图中的一些 tab,比如 __Summay __ 对所有的事件都会有对应的展示信息,其他的一些 tab 只有对于某些特定的事件类型才有展示内容。可以通过查看 Timeline event reference 查看 tab 和事件类型的关系。

Capture screenshots during recording

TImeline 面板还可以在记录期间对页面进行截屏重现,这个特性就像幻灯片查看一样。

如果要对一个页面的进行截屏重现,现在 控制区域(Controls pane) 中勾选 Screenshots,然后开始记录,完成记录后,页面的截屏会展现在 概述面板(Overview pane)下方。

timeline-filmstrip.png

将鼠标移动到 概述区域截屏 上可以查看到当前点上页面截屏放大的图像,左右移动鼠标来模拟记录期间页面的动态效果。

Profile JavaScript

在开始记录之前,在控制区域(Control pane)勾选 JS Profile,这样记录的时候就会去记录 JavaScript stacks 相关信息。这时你的 Flame Chart 中将会记录任何一个被调用过的方法。

js-profile

Profile painting

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

paint-profiler

Rendering settings

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

rendering-settings

Search records

查看记录的事件时,你可能只希望关注于某一类型的事件,比如你只是希望查看每个 Parse HTML 事件的详细信息。

通过使用 Cmd + F/Ctrl + F快捷键,在 Timeline 区域中打开 搜索工具栏,在搜索工具栏中输入你想分析的事件类型,比如 Event.

工具栏只会将搜索条件作用在当前选择的时间表内的事件,在时间表外的事件都不会显示在结果中。

搜索工具栏中的上下箭头可以帮助你按事件发生的先后顺序查看过滤后的事件的详细信息。第一条记录代表当前选区最先发生的事件,最后一条记录代表当前选区最后发生的事件。每次点击上下箭头,就会选择一个新的事件,所以你可以在 Details 面板查看这个事件的具体信息。(点击上下箭头和在 Flame Chart 选择一个事件是等效的)

find-toolbar

Zoom in on a Timeline section

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

zoom

可以通过下面的方式来指定选择一块区域:

  • Overview 面板,通过鼠标拖选出关注的内容
  • 通过调整 ruler 区域的灰色滑块来选出关注的内容

一旦你选择了某一块内容,你可以使用 W, A, S, D 键来调整选区,WS 用来放大放小选取,AD 分别向左向右移动选区。(测试中没发现具体怎么使用,通过手动选区来实现这些功能)

Save and load recordings

你可以通过在 概述面板Flame Chart 区域点击鼠标左键,在弹出的菜单中选择相关选项,实现Save 和 Load recordings。

save-open
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容