使用Chrome工具来分析页面的绘制状态

Chrome Canary(Chrome “金丝雀版本”)目前已经支持Continuous painting mode,用于分析页面性能。这篇文章将会介绍怎么才能页面在绘制过程中找到问题和怎么利用这个新的工具来解决页面性能上的瓶颈。

PS:最新版本的Chrome已经支持该功能

查看页面的渲染时间

我们采用Things We Left On The Moon by Dan Cederholm的页面来作为我们的例子页面。

打开Chrome的Web Inspector(即按F12),选择Timeline页卡,并且上下滚动页面(页面滚动,浏览器发生重绘)。你会看到一堆垂直的时间线,鼠标点击每根线,就能看到每一帧页面的绘制情况。

如果你看到时间都花在绘制页面(大片绿色都在60fps上面)上面,那么你就需要去仔细看看出了什么状况。为了查明原因,利用Show paint rectangles选项,移到鼠标到页面会出现矩形框,这里框定了Chrome绘制页面的区域,同时Web Inspector 也记录了该区域的信息。

下面是Chrome重绘页面的几个原因:

1.Dom节点被Javascript改变,导致Chrome重新计算页面的layout。

2.动画不定期更新。

3.用户交互,如hover导致页面某些元素页面样式的变化。

4.其他的操作导致页面layout的改变。

作为一个开发者你需要关注到页面上发生的重绘。然而利用paint rectangle你就能够观察到这些问题,就像截图软件一样在页面上画个矩形。如果你滚动页面则整个屏幕都会重绘。有个特例,CSS样式中的background-attachment:fixed,能让背景图片在页面上停留在固定位置而不随着你滚动页面而改变。

如果你确定重绘在页面上大面积发生或者花了很长时间,你可以有两种做法解决:

1.试着去改变页面的layout来减少重绘的数量。一般情况下Chrome只会重绘一次那些可见的页面区域还有滚动时的可见区域。有些情况下Chrome不得不去重绘某些区域,例如经常用来固定导航条的样式position:fixed,就会导致这种重绘。

2.如果你不想改变页面layout,你可以试着去减少重绘的发生。并不是所有的样式的重绘开销都一样,有的影响大,有的小。利用Elements面板来记录不同样式所带来的开销,从中做出比对,选择合适的样式应用到元素中。下面介绍Continuous painting mode的用法。

CONTINUOUS PAINTING MODE

Continuous painting mode能够让你确定哪些元素耗费了多少资源,它能够让页面进入重绘状态,并把重绘的过程通过数据展现出来。为了找出资源开销大的元素,你可以通过隐藏元素和改变样式的同时,并结合右上角的面板来得出结论。

安装

在原文发表之前,Continuous painting mode只能在Chrome Canary上得到体验。现在只需要更新你的Chrome到最新版本,按F12,设置一下即可。

在Linux系统和一些MAC系统下,需要确保Chrome开启了混合模式,方法是地址栏输入about:flags,然后启用GPU compositing on all pages。

开始操作

开启监测:

打开paint rectangle和显示面板:

右上角的面板呈现出的是以毫秒为单位测算出的绘制时间。如:

1.最后测量的绘制时间在最左边。

2.最小值和最高值在图表的右边。

3.下面的柱形图表示最后80帧(每16毫秒为一个测速点)。绘制时间的测量值由屏幕分辨率,屏幕大小和设备硬件性能决定的,因此要考虑到用户的操作环境不同数值也会有所差异

PS:最新版的面板如下图:

具体步骤

制造更多的重绘能让你知道continuous painting mode是怎么查看到页面元素和样式的:

1.打开Web Inspector的设置,勾选Enable continuous page repainting。

2.到Elements面板,用鼠标在节点树上面来回的移动或者在页面选中元素。

3.利用快捷方式H键,通过绑定visibility样式来显示隐藏元素。

4.查看绘制时间的曲线图,试着去点击一个元素来让图表绘制显示更多的时间曲线。

5.通过勾选右侧的样式复选框来控制样式,来测试渲染该样式带来页面开销。

6.通过改变样式来测试是否页面性能更优。

下面的动画展示的绑定样式对绘制时间的影响:

这个例子说明了当关掉box-shadow和border-radius时,减少了大量的重绘时间。同时运用这两个样式的带来了昂贵的重绘开销,因为Chrome并没有对它们做出优化。所以如果你的页面某个元素会有大量的重绘,你应该避免类似的组合。

演示地址:

如果你能FQ的话,可以点击看看~http://www.youtube.com/embed/FY5iiuQRyEE?start=683&end=788
译自:Profiling Long Paint Times with DevTools‘ Continuous Painting Mode

时间: 2024-08-04 10:09:20

使用Chrome工具来分析页面的绘制状态的相关文章

使用Chrome DevTools的Timeline分析页面性能

随着webpage可以承载的表现形式更加多样化,通过webpage来实现更多交互功能,构建web应用程序已经成为很多产品的首要选择.这种方式拥有非常明显的优势:跨平台.开发便捷.便于部署和维护等等,但随着功能的不断积累,web应用程序也会变得越来越复杂.但是,我们仍然想要在webpage支持丰富的呈现形式的同时,让页面效果能够达到>=60fps(帧)/s的刷新频率以避免出现卡顿,就需要我们使用一些比较直观的方式来分析衡量页面的性能问题,为性能优化方案提供依据. 为什么是60fps?我们的目标是保

Web页面加载,如何分析页面性能?如何进行优化?

一.浏览器加载过程:1.建立连接过程 (1) 浏览器查找域名的IP地址 (2) 浏览器给web服务器发送一个HTTP请求 (3) 服务器发送永久重定向响应 (4) 浏览器跟踪重定向地址 (5) 服务器"处理"请求 (6) 服务器发回一个HTML响应2.浏览器渲染 解析HTML ↓构建DOM树 ↓渲染树构建 ↓渲染树布局 ↓绘制渲染树二.优化方法1.启用浏览器缓存 浏览器要根据域名找出IP地址,而DNS查找过程的第一步是在浏览器缓存中查找,根据Chrome的PageSpeed给出的建议:

Google Chrome抓包分析详解

Google Chrome抓包分析详解 一:什么是抓包 即抓取我们本地电脑与远端服务器通信时候所传递的数据包 二:Chrome浏览器讲解 Chrome 开发者工具是一套内置于Google Chrome中的Web开发和调试工具,可用来对网站进行迭代.调试和分析 三:打开Chrome开发者工具 在Chrome界面按F12 or在页面元素上右键点击,选择“检查” 四:开发者工具的结构 Elements(元素面板):使用“元素”面板可以通过自由操纵DOM和CSS来重演您网站的布局和设计. Console

通过chrome浏览器调试手机页面(IOS和Android)

开发PC页面的时候使用chrome浏览器的开发者工具,可以很容易的捕获到页面的dom元素,并且可以修改样式,方便调试,但是手机上却很麻烦,因为手机上没有办法直接打开开发者工具查看元素.其实可以通过将设备连接到PC,使用PC的开发者工具检测 一.针对android设备 1.在android设备上开始开发者模式 2.将设备连接到PC,在chrome浏览器地址栏输入:chrome://inspect/#devices 3.在手机上打开网页的时候,chrome就会检测到网页,可以直接调试 二.针对IOS

chrome插件:提取页面数据

近期在做chrome插件,需要提取页面里的一些数,简单说就是企业版微博的后台数据,因为微博不提供导出功能.最开始是用php完成的,但是每次都需要先把页面代码保存下来,再进行提取,很麻烦.chrome插件可以和页面DOM交互,看起来很方便,所以开始学着写.javascript和jQuery都是边学习边写. 以下代码实现了把需要的数据提出来,需要补充xmlHttpObject部分. <script type="text/javascript" charset="UTF-8&

常用 Java 静态代码分析工具的分析与比较

转载自: http://www.oschina.net/question/129540_23043 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能.特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中. 引言 在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代

PLSQL_性能优化效能跟踪工具DBMS_PROFILER分析(案例)

一.摘要 Oracle PLSQL性能诊断是经常会遇到问题,所以Oracle提供了比较多的程式诊断工具,其中包括了dbms_profiler包 DBMS_PROFILER中会用到一些基本构建如下 在调用程式前DBMS_PROFILER.START_PROFILER,启动对该程式监控 在调用程式后DBMS_PROFILER.STOP_PROFILER,结束对程式监控 在监控过程中,系统会将资料存放至三个表中PLSQL_PROFILER_RUNS -> UNITS -> DATA 通过profil

js在web页面上绘制圆形

在web页面上,想要画出一个圆形,方法有很多,SVG.canvas都可以绘图.但是本文不采用这两种方式,而是使用一个div.div一般是一个矩形,但是如果设置一个圆角样式border-radius就可以将div变成圆形. 圆的位置需要在画布中绝对定位(position: absolute),也就是通过设置X.Y坐标在定位,对应的css样式是left.top.想要圆的绝对定位起效,画布就要设置position:relative. <!DOCTYPE html> <html> <

mysql慢查询分析工具和分析方法

1.mysql慢查询分析工具 1.参考文档: http://www.ttlsa.com/mysql/analyse-slow-query-log-using-anemometer/ http://isadba.com/?p=655 官方文档: https://github.com/box/Anemometer 数据库管理员一般是用percona的toolkit工具来分析MySQL慢查询记录,但是不够直观. 下面介绍一款比较直观的工具来统计分析MySQL慢查询记录anemometer. 在使用之前