aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/api/navigation_timing_api/index.html
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/api/navigation_timing_api/index.html
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-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.html191
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>