Evaluating network performance

The Network panel records information about each network operation in your application, including detailed timing data, HTTP request and response headers, cookies, WebSocket data, and more. The Network panel helps you answer questions about the network performance of your web application, such as:

  • Which resource had the slowest time to first byte?
  • Which resources took the longest time to load (duration)?
  • Who initiated a particular network request?
  • How much time was spent in the various network phases for a particular resource?

About the Resource Timing API

The Network panel uses the Resource Timing API, a JavaScript API that provides detailed network timing data for each loaded resource. For example, the API can tell you precisely when the HTTP request for an image started, and when the image's final byte was received. The following illustration shows the network timing data points that the Resource Timing API provides.

The API is available to any web page, not just DevTools. In Chrome, it's exposed as methods on the globalwindow.performance object. The performance.getEntries() method returns an array of "resource timing objects", one for each requested resource on the page.

Try this: open the JavaScript console on the current page, enter the following at the prompt, and hit Return:

window.performance.getEntries()[0]

This evaluates the first element in the array of resource timing objects and displays its properties in the console, as shown below.

Each timestamp is in microseconds, following the High ResolutionTime specification. This API is available inChrome as the window.performance.now() method.

Network panel overview

The Network panel automatically records all network activity while DevTools is open. The first time you open the panel it may be empty. Reload the page to start recording, or simply wait for network activity to occur in your application.

Each requested resource is added as a row to the Network table, which contains the columns listed below. Note the following about the Network table:

  • Not all columns listed below are visible by default; you can easily show or hide columns.
  • Some columns contain a primary field and a secondary field (Time and Latency, for example). When viewing the Network table with large resource rows both fields are shown; when using small resource rows only the primary field is shown.
  • You can sort the table by a column's value by clicking the column header. The the Timeline columnbehaves a bit differently: clicking its column header displays a menu of additional sort fields. See Waterfall view and Sorting and filtering for more information.
Name and Path
The name and URL path of the resource, respectively.
Method
The HTTP method used for the request. For example: GET or POST.
Status and Text
The HTTP status code and text message.
Domain
The domain of the resource request.
Type
The MIME type of the requested resource.
Initiator
The object or process that initiated the request. It can have one of the following values:
Parser
Chrome's HTML parser initiated the request.
Redirect
A HTTP redirect initiated the request.
Script
A script initiated the request.
Other
Some other process or action initiated the request, such as the user navigating to a page via a link, or by entering a URL in the address bar.
Cookies
The number of cookies transferred in the request. These correspond to the cookies shown in the Cookies tab when viewing details for a given resource.
Set-Cookies
The number of cookies set in the HTTP request.
Size and Content
Size is the combined size of the response headers (usually a few hundred bytes) plus the response body, as delivered by the server. Content is the size of the resource's decoded content. If the resource was loaded from the browser's cache rather than over the network, this field will contain the text (from cache).
Time and Latency
Time is total duration, from the start of the request to the receipt of the final byte in the response. Latency is the time to load the first byte in the response.
Timeline
The Timeline column displays a visual waterfall of all network requests. Clicking the header of this column reveals a menu of additional sorting fields.

Preserving the network log upon navigation

By default, the current network record log is discarded when you navigate to another page, or reload the current page. To preserve the recording log in these scenarios, click the black Preserve log upon navigationbutton  at the bottom of the Network panel; new records are appended to the bottom of the table. Click the same button again (now red ) to disable log preservation.

Sorting and filtering

By default, resources in the Network table are sorted by the start time of each request (the network "waterfall"). You can sort the table by another column value by clicking the column header. Click the header again to change the sort order (ascending or descending).

The Timeline column is unique from the others in that, when clicked, it displays a menu of additional sort fields.

The menu contains the following sorting options:

  • Timeline — Sorts by the start time of each network request. This is the default sort, and is the same as sorting by the Start Time option).
  • Start Time — Sorts by the start time of each network request (same as sorting by the Timeline option).
  • Response Time — Sorts by each request's response time.
  • End Time — Sorts by the time when each request completed.
  • Duration — Sorts by the total time of each request.
  • Latency — Sorts by the time between the start of the request and the beginning of the response (also known as the "time to first byte").

To filter the Network table to only show certain types of resources, click one of the content types along the bottom of the panel: DocumentsStylesheetsImagesScriptsXHRFontsWebSockets, and Other. In the following screenshot only CSS resources are shown. To view all content types, click the All filter button.

Advanced filtering

In addition to resource type filtering, you can narrow down resources by filter queries. For example, to find all resources which have a status code of 200, you can enter the query StatusCode:200 in the filter input field.

Take note of the following behaviour: A filter query includes a type (StatusCode) and value (200). A filter query is case insensitive, so you can type uppercase or lowercase. The filter type gives you autocomplete suggestions. Use the arrows keys to form a selection and press Tab to select it. The filter value has autocomplete which shows you values present in the current network recording. Quickly preview the results of your query, use the Up / Down arrow keys to cycle through the autocomplete suggestions. The results appear immediately even you do not press enter or tab to complete the selection. To negate a filter query, prepend the query with a dash (-), for example -StatusCode:200.

Available filter types:

domain
The domain portion from the URL of the resource. E.g. www.google-analytics.com.
has-response-header
Checks the resource has a response header, regardless of the value. E.g.Access-Control-Allow-Origin.
is
Shows requests running at the current point in time. Current available value:running
larger-than
Shows requests with a transfer size larger than the specified amount. Units assumed in bytes, but kilobyte (k) & megabyte (m) units also allowed: E.g.larger-than:50larger-than:150klarger-than:2m
method
The HTTP method used. E.g. GET.
mime-type
Also known as Content-type - the identifier for the type of resource. E.g.text/html.
scheme
The scheme portion in a URL. E.g. https.
set-cookie-name
The name of the cookie as set by the server. E.g. loggedIn (assuming a cookie like loggedIn=true).
set-cookie-value
The value of the cookie set by the server. E.g. true (assuming a cookie likeloggedIn=true).
set-cookie-domain
The domain of the cookie as set by the server. E.g. foo.com (assuming a cookie like loggedIn=true; Domain=foo.com; Path=/; Expires=Wed, 13 Jan 2021 22:23:01 GMT; HttpOnly).
status-code
The status code in the HTTP response. E.g. 200.

To use a query shown in the above list, construct it in the format of: <Filter Type>:<Description>. You will almost always want to use the autocomplete suggestions which ensures your query is valid.

Adding and removing table columns

You can change the default set of columns displayed by the Network table. To show or hide a column, Right+click or Control+click (Mac only) in the table header and select or deselect column names from the list.

Changing resource row sizes

You can view the Network table with large resource rows (the default), or small resource rows. Click the blueUse small resource rows toggle button  at the bottom of the panel to view small rows. Click the same button (now gray ) to view large resource rows again. Large rows enable some columns to display two text fields: a primary field and a secondary field (Time and Latency, for instance). When viewing small rows only the primary field is displayed.

The network table with small resource rows and just the timeline column.

Waterfall view

The waterfall view in the network panel graphs the time it took to load each resource.From the start of the HTTP request to the receipt of the final byte of the response.

Each resource loading time is represented as a bar.This has color-coded information related to each resource.Each color specifies a different step needed to recieve the resource.The larger the bar grows represents more data being trasmitted for the request.

The network timeline for a simple web page.

Hovering your mouse over the bar itself will present the complete timing data.This is the same information that's presented in the Timing details tab for a given resource.

Network timing details revealed on hover.

The waterfall highlights DOMContentLoaded and load events display with blue and red vertical lines. When the engine has completed parsing of the main document the DOMContentLoaded event fires. Upon retrieving all the page's resources the load event will fire.

The event lines as displayed over the timeline.

You may enable in the network settings to view the timeline as color-coded by resource type.If you do the network timing information is still accessible through the tooltip.Waterfall bars are color-coded as follows:

  Documents
  Stylesheets
  Images
  Scripts
  XHR
  Fonts
  Other

Saving and copying network information

Right-clicking or Ctrl + Click (Mac only) within the Network table a context menu appears with several actions. Some of these actions apply to the resource row under the mouse click (like copying HTTP request headers), while others apply to the entire network recording (such as saving a Network recording as a HAR file).

The following menu actions apply to the selected resource:

  • Open Link in New Tab — Opens the resource in a new tab. You can also double-click the resource name in the Network table.
  • Copy Link Address — Copies the resource URL to the system clipboard.
  • Copy Request Headers — Copies the HTTP request headers to the system clipboard.
  • Copy Response Headers — Copies the HTTP response headers to the system clipboard.
  • Copy as cURL — Copies the network request as a cURL command string to the system clipboard. SeeCopying requests as cURL commands.
  • Replay XHR — If the associated request is an XMLHTTPRequest, re-sends the original XHR.

Copying requests as cURL commands

cURL is a command line tool for making HTTP transactions. The Network panel's Copy as cURL command recreates an HTTP request (including HTTP headers, SSL certificates, and query string parameters) and copies it as a cURL command string to the clipboard. You can then paste the string into a terminal window (on a system with cURL) to execute the same request.

Below is an example cURL command line string taken from a XHR request on the Google News home page.

curl 'http://news.google.com/news/xhrd=us' -H 'Accept-Encoding: gzip,deflate,:sdch' -H 'Host: news.google.com' -H 'Accept-Language: en-US,en;q=0.8' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1510.0 Safari/537.36' -H 'Accept: */*' -H 'Referer: http://news.google.com/nwshp?hl=en&tab=wn' -H 'Cookie: NID=67=eruHSUtoIQA-HldQn7U7G5meGuvZOcY32ixQktdgU1qSz7StUDIjC_Knit2xEcWRa-e8CuvmADminmn6h2_IRpk9rWgWMdRj4np3-DM_ssgfeshItriiKsiEXJVfra4n; PREF=ID=a38f960566524d92:U=af866b8c07132db6:FF=0:TM=1369068317:LM=1369068321:S=vVkfXySFmOcAom1K' -H 'Connection: keep-alive' --compressed

Saving network data

You can save the data from a network recording as a HAR (HTTP Archive) file, or copy the records as a HAR data structure to your clipboard. A HAR file contains a JSON data structure that describes the network "waterfall". Several third-party tools can reconstruct the network waterfall from the data in the HAR file.

To save a recording:

  1. Right+click or Control+click on the Network table.
  2. In the context menu that appears, choose one of the following actions:
    • Copy All as HAR — Copies the network recording to the system clipboard in the HAR format.
    • Save as HAR with Content — Saves all network data to a HAR file along with each page resource. Binary resources, including images, are encoded as Base64-encoded text.

For more information, Web Performance Power Tool: HTTP Archive (HAR).

Network resource details

When you click a resource name in the Network table a tabbed window appears that contains the following additional details:

HTTP headers

The Headers tab displays the resource's request URL, HTTP method, and response status code. Additionally, it lists the HTTP response and request headers and their values, and any query string parameters. You can view HTTP headers parsed and formatted, or in their source form by clicking the View parsed/View source toggle button, respectively, located next to each header's section. You can also view parameter values in their decoded or URL encoded forms by clicking the View decoded/View URL encoded toggle button next to each query string section.

You can also copy request and response headers to your clipboard.

Resource previews

The Preview tab displays a preview of the resource, when available. Previews are currently displayed for image and JSON resources, as shown below.

You can view the resource's unformatted response on the Responsetab.

HTTP response

The Response tab contains the resource's unformatted content. Below is a screenshot of a JSON data structure that was returned as the response for a request.

You can also view formatted previews of some resource types, including JSON data structures and images.

Cookies

The Cookies tab displays a table of all the cookies transmitted in theresource's HTTP request and response headers. You can also clear all cookies.

The Cookies table contain the following columns:

Name
The cookie's name.
Value
The value of the cookie.
Domain
The domain the cookie belongs to.
Path
The URL path the cookie came from.
Expires / Max-Age
The value of the cookie's expires or max-age properties.
Size
The size of the cookie in bytes.
HTTP
This indicates that the cookie should only be set by the browser in the HTTP request, and cannot be accessed with JavaScript.
Secure
The presence of this attribute indicates that the cookie should only be transmitted over a secure connection.

WebSocket frames

The Frames tab shows messages sent or received over a WebSocket connection. This tab is only visible when the selected resource initiated a WebSocket connection. The table contains the following columns:

Data
The message payload. If the message is plain text, it's displayed here. For binary opcodes, this field displays the opcode's name and code. The following opcodes are supported:

  • Continuation Frame
  • Binary Frame
  • Connection Close Frame
  • Ping Frame
  • Pong Frame
Length
The length of the message payload in bytes.
Time
The time stamp when the message was created.

Messages are color-coded according to their type. Outgoing text messages are color-coded light-green; incoming text messages are white:

WebSocket opcodes are light-yellow:

Errors are light-red.

Notes about current implementation:

  • To refresh the Frames table after new messages arrive, click the resource name on the left.
  • Only the last 100 WebSocket messages are preserved by the Frames table.

Resource network timing

The Timing tab graphs the time spent on the various network phases involved loading the resource. This is the same data displayed when you hover over a resource bar in the waterfall view.

Stalled/Blocking
Time the request spent waiting before it could be sent. This time is inclusive of any time spent in proxy negotiation. Additionally, this time will include when the browser is waiting for an already established connection to become available for re-use, obeying Chrome's maximum six TCP connection per origin rule.
Proxy Negotiation
Time spent negotiating with a proxy server connection.
DNS Lookup
Time spent performing the DNS lookup. Every new domain on a page requires a full roundtrip to do the DNS lookup.
Initial Connection / Connecting
Time it took to establish a connection, including TCP handshakes/retries and negotiating a SSL.
SSL
Time spent completing a SSL handshake.
Request Sent / Sending
Time spent issuing the network request. Typically a fraction of a millisecond.
Waiting (TTFB)
Time spent waiting for the initial response, also known as the Time To First Byte. This time captures the latency of a round trip to the server in addition to the time spent waiting for the server to deliver the response.
Content Download / Downloading
Time spent receiving the response data.

Additional resources

To learn more optimizing the network performance of your application, see the following resources:

【转载】https://developers.google.com/web/tools/profile-performance/network-performance/resource-loading

    https://developer.chrome.com/devtools/docs/network#resource-previews

Google DevTools Explanation的更多相关文章

  1. Google Tensorflow 源码编译(三):tensorflow<v0.5.0>

    这几天终于把tensorflow安装上了,中间遇到过不少的问题,这里记录下来.供大家想源码安装的参考. 安装环境:POWER8处理器,Docker容器Ubuntu14.04镜像. Build Tens ...

  2. Google Tensorflow 源码编译(二):Bazel<v0.1.0>

    这几天终于把tensorflow安装上了,中间遇到过不少的问题,这里记录下来.供大家想源码安装的参考. 安装环境:POWER8处理器,Docker容器Ubuntu14.04镜像. Build Baze ...

  3. Chrome 35个开发者工具的小技巧

    来源:w3cplus - 南北(@ping4god) 网址:http://www.w3cplus.com/tools/dev-tips.html 谷歌浏览器如今是Web开发者们所使用的最流行的网页浏览 ...

  4. 安装 Tensorflow

    环境:Ubuntu 16.04  64bit 1.    安装Anaconda Anaconda 是 Python 的一个科学计算发行版,内置了数百个Python经常会使用的库,也包括了许多机器学习和 ...

  5. 安装tensorflow,那叫一个坑啊

    最近,项目团队需要研究并应用AI的技术,在具体的产品实施环节中使用.之前的几个项目,是委托武汉大学给做的,基于keras框架,实现了一些图像识别的项目. 这不,上方希望自己能够掌握一些常用且成熟的AI ...

  6. Tensorflow源码编译,解决tf提示未使用SSE4.1 SSE4.2 AVX警告【转】

    本文转载自:https://blog.csdn.net/iTaacy/article/details/72799833 版权声明:欢迎转载,转载请注明出处! https://blog.csdn.net ...

  7. 解决TensorFlow最新代码编译错误问题

    老是有个习惯,看到开源代码更新了,总是想更新到最新版,如果置之不理的话,就感觉自己懒惰了或有的不负责任了,这个也可能是一种形式的强迫症吧: 前几天晚上git pull TensorFlow,完事后也没 ...

  8. Web测试实践-任务进度-Day03

    小组成员 华同学.郭同学.覃同学.刘同学.穆同学.沈同学 任务进度 在经过任务分配阶段后,大家都投入到了各自的任务中,以下是大家今天任务的进度情况汇总. 华同学 & 刘同学(任务1) 1.再对 ...

  9. TensorFlow CPU环境 SSE/AVX/FMA 指令集编译

    TensorFlow CPU环境 SSE/AVX/FMA 指令集编译 sess.run()出现如下Warning W tensorflow/core/platform/cpu_feature_guar ...

随机推荐

  1. 吴裕雄--天生自然MySQL学习笔记:MySQL NULL 值处理

    MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. 为了处理这种情况,MySQL提供了三大运算符 ...

  2. CSS3 box-shadow 效果大全(内阴影,外阴影,三边阴影,双边阴影,单边阴影,细线描边…)

    /* offset-x | offset-y | color */ box-shadow: 60px -16px teal; /* offset-x | offset-y | blur-radius ...

  3. 22. docker 数据持久化 Data Volume

    1 . 使用场景 在docker 容器被删除的时候  希望数据不丢失 2 . Volume 的使用 * 注意 在 mysql 的 Dockerfile 内 定义了 VOLUME ["var/ ...

  4. JavaScript数组打平(4种方法)

    let arr = [1, 2, [3, 4, 5, [6, 7, 8], 9], 10, [11, 12]]; flatten1 = arr => arr.flat(Infinity) fla ...

  5. 84.常用的返回QuerySet对象的方法使用详解:select_related, prefetch_related

    1.select_related: 只能用在一对多或者是一对一的关联模型之间,不能用在多对多或者是多对一的关联模型间,比如可以提前获取文章的作者,但是不能通过作者获取作者的文章,或者是通过某篇文章获取 ...

  6. UML-如何进行对象设计?

    之前的章节,学过了OOA,以及交互图+类图.本章主要讲述OOD.OOD就是面向对象设计,那如何进行对象设计? 概览 1.输入制品 注:这些制品并非都必要. 2.活动 1).针对输入的制品,采用什么样的 ...

  7. node 第三方库总结

    app.post("/todo/add", (request, response) => { request.body //如何拿到前端ajax传来的JSON数据 }) 需要 ...

  8. Linux-waitpid介绍

    1.waitpid与wait差别 (1).基本功能是一样的,都是用来回收子进程 (2).waitpid可以回收指定PID的子进程 (3).waitpid可以阻塞式或非阻塞式两种工作模式 2.代码示例 ...

  9. JavaScript学习笔记 - 入门篇(3)- DOM操作

    认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 先来看看下面代码 ...

  10. Kali 时间修改

    前言 装了新版本的 Kali 之后发现默认的时间和实际的时间不太一样 查了资料说 linux 的默认时间是格林威治时间,即从本初子午线为0时区 以下是 kali 修改时间的方法 1.tzselect ...