diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/api/navigation_timing_api/index.html | |
parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
download | translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2 translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip |
initial commit
Diffstat (limited to 'files/zh-cn/web/api/navigation_timing_api/index.html')
-rw-r--r-- | files/zh-cn/web/api/navigation_timing_api/index.html | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/files/zh-cn/web/api/navigation_timing_api/index.html b/files/zh-cn/web/api/navigation_timing_api/index.html new file mode 100644 index 0000000000..a0cc8c3d75 --- /dev/null +++ b/files/zh-cn/web/api/navigation_timing_api/index.html @@ -0,0 +1,191 @@ +--- +title: Navigation Timing API +slug: Web/API/Navigation_timing_API +tags: + - Navigation Timing API +translation_of: Web/API/Navigation_timing_API +--- +<p>{{DefaultAPISidebar("Navigation Timing")}}</p> + +<p><strong>Navigation Timing API</strong> 提供了可用于衡量一个网站性能的数据。与用于相同目的的其他基于JavaScript的机制不同,该API可以提供可以更有用和更准确的端到端延迟数据。</p> + +<p> </p> + +<h2 id="Concepts_and_usage">Concepts and usage</h2> + +<p>你可以使用Navigation Timing API在客户端收集性能数据,并用{{domxref("XMLHttpRequest")}} 或其它技术传送到服务端。同时,该API使你可以衡量之前难以获取的数据,如卸载前一个页面的时间,在域名解析上的时间,在执行{{event("load")}}事件处理器上花费的总时间等。</p> + +<p> </p> + +<h2 id="Interfaces">Interfaces</h2> + +<p>{{domxref("Performance")}}</p> + +<p>返回一个Performance对象。该对象由High Resolution Time API定义,Navigation Timing API 在此基础上增加了两个属性:{{domxref("Performance.timing", "timing")}} 和 {{domxref("Performance.navigation", "navigation")}}</p> + +<p>{{domxref("PerformanceNavigationTiming")}}</p> + +<p>提供了方法和属性来存取关于游览器文档navigation事件的相关数据。如文档实际加载/卸载的时间。</p> + +<p>{{deprecated_inline}} {{domxref("PerformanceTiming")}}</p> + +<p>曾被用来获取{{domxref("Performance.timing", "timing")}}的值,用来衡量页面性能。</p> + +<p>{{deprecated_inline}} {{domxref("PerformanceNavigation")}}</p> + +<p>曾被用来获取{{domxref("Performance.navigation", "navigation")}}的值,用来描述加载相关的操作。</p> + +<p> </p> + +<p> </p> + +<p>以下示例显示了如何测量感知加载时间:</p> + +<pre>function onLoad() { + var now = new Date().getTime(); + var page_load_time = now - performance.timing.navigationStart; + console.log("User-perceived page loading time: " + page_load_time); +} +</pre> + +<p>还有很多以毫秒为单位呈现的测量事件,你可以通过 {{domxref("PerformanceTiming")}} 接口得到它们。按照事件发生的先后顺序,这些事件的列表如下:</p> + +<ul> + <li>navigationStart</li> + <li>unloadEventStart</li> + <li>unloadEventEnd</li> + <li>redirectStart</li> + <li>redirectEnd</li> + <li>fetchStart</li> + <li>domainLookupStart</li> + <li>domainLookupEnd</li> + <li>connectStart</li> + <li>connectEnd</li> + <li>secureConnectionStart</li> + <li>requestStart</li> + <li>responseStart</li> + <li>responseEnd</li> + <li>domLoading</li> + <li>domInteractive</li> + <li>domContentLoadedEventStart</li> + <li>domContentLoadedEventEnd</li> + <li>domComplete</li> + <li>loadEventStart</li> + <li>loadEventEnd</li> +</ul> + +<p><code>window.performance.navigation 对象存储了两个属性,它们表示触发页面加载的原因。这些原因可能是页面重定向、前进后退按钮或者普通的 </code>URL<code> 加载。</code></p> + +<p>window.performance.navigation.type:</p> + +<table class="standard-table" style="font-size: 14px;"> + <thead> + <tr> + <th scope="col">Constant</th> + <th scope="col">Value</th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><a name="const_next"><code>TYPE_NAVIGATE</code></a></td> + <td>0</td> + <td> + <p>导航开始于点击链接、或者在用户代理中输入 URL、或者表单提交、或者通过除下表中 TYPE_RELOAD 和 TYPE_BACK_FORWARD 的脚本初始化操作。</p> + </td> + </tr> + <tr> + <td><a name="const_next_no_duplicate"><code>TYPE_RELOAD</code></a></td> + <td>1</td> + <td> + <p>通过刷新操作或者 location.reload() 方法导航。</p> + </td> + </tr> + <tr> + <td><a name="const_prev"><code>TYPE_BACK_FORWARD</code></a></td> + <td>2</td> + <td> + <p>通过历史遍历操作导航。</p> + </td> + </tr> + <tr> + <td><a name="const_prev_no_duplicate"><code>TYPE_UNDEFINED</code></a></td> + <td>255</td> + <td> + <p>其他非以上类型的导航。</p> + </td> + </tr> + </tbody> +</table> + +<p><code>window.performance.navigation.redirectCount 表示到达最终页面前,重定向的次数(如果有的话)。</code></p> + +<p>Navigation Timing API 可以用于收集客户端性能数据,然后通过 XHR 发送给服务端。还可以计算那些其他方法难以计算的数据,如卸载( unload )上一个页面的时间、域名查找时间、window.onload 的总时间等等。</p> + +<h2 id="示例">示例</h2> + +<p>计算页面加载所需的总时长:</p> + +<pre>var perfData = window.performance.timing; +var pageLoadTime = perfData.loadEventEnd - perfData.navigationStart; +</pre> + +<p>计算请求返回时长:</p> + +<pre>var connectTime = perfData.responseEnd - perfData.requestStart;</pre> + +<h2 id="Browser_Compatibility" name="Browser_Compatibility">规范</h2> + +<ul> + <li><a class="external" href="http://www.w3.org/TR/navigation-timing/" title="http://www.w3.org/TR/navigation-timing/">https://w3c.github.io/navigation-timing/</a></li> +</ul> + +<h2 id="浏览器兼容性">浏览器兼容性</h2> + +<p>{{ CompatibilityTable }}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>6.0</td> + <td>{{ CompatGeckoDesktop("7") }}</td> + <td>9</td> + <td>15.0</td> + <td>8</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>4.0</td> + <td>{{ CompatGeckoDesktop("15") }}</td> + <td>9</td> + <td>15.0</td> + <td>8</td> + </tr> + </tbody> +</table> +</div> |