1. 序論
◎非規範的~web~appの処理能~特性の測定-法は、 ~web~appをより高速にするために重要な側面になる。 `JSMEASURE$r などの~JSに基づく仕組みは、 ~appにおける利用者の待時間( `latency^en )測定~用の包括的な~~手段を供せる一方で、 多くの事例で,それらは端点間における待時間の完全なあるいは詳細な様相を供せない。 例えば,次の~JSは、 ~pageが全部的に~loadされるまでの時間を,ごく素朴に測定しようと試みる: ◎ Accurately measuring performance characteristics of web applications is an important aspect of making web applications faster. While JavaScript-based mechanisms, such as the one described in [JSMEASURE], can provide comprehensive instrumentation for user latency measurements within an application, in many cases, they are unable to provide a complete or detailed end-to-end latency picture. For example, the following JavaScript shows a naive attempt to measure the time it takes to fully load a page:
<html>
<head>
<script type="text/javascript">
var start = new Date().getTime();
function onLoad() {
var now = new Date().getTime();
var latency = now - start;
alert("page loading time: " + latency);
}
</script>
</head>
<body onload="onLoad()">
<!--
~page本体の内容…
◎
Main page body goes from here.
-->
</body>
</html>
上の~scriptは `head^e ~tag内の最初の~JS~codeが実行されて以降から,~pageが~loadされるまでの時間は計算するが、 ~serverから~pageを得るために要した時間や, ~pageの初期~化 lifecycle 【! * 】についての情報は与えない。 ◎ The above script calculates the time it takes to load the page after the first bit of JavaScript in the head is executed, but it does not give any information about the time it takes to get the page from the server, or the initialization lifecycle of the page.
この仕様は、 文書の~naviに関係する高分解能な処理能~計量~dataを格納する/検索取得するための, `PERFORMANCE-TIMELINE-2$r に関与する `PerformanceNavigationTiming$I ~interfaceを定義する。 `PerformanceNavigationTiming$I ~interfaceは `HR-TIME$r を利用するので、 すべての時刻~値は, 当の~entryに`関連な設定群~obj$の`時刻起点$enVを~~基準に測定される。 【したがって、 `PerformanceNavigationTiming^I ~interfaceが返す時刻~値 0 は,`時刻起点$enVを表すことになる。】 ◎ This specification defines the PerformanceNavigationTiming interface which participates in the [PERFORMANCE-TIMELINE-2] to store and retrieve high resolution performance metric data related to the navigation of a document. As the PerformanceNavigationTiming interface uses [HR-TIME], all time values are measured with respect to the time origin of the entry's relevant settings object.
例えば,~HTTP応答の終了が~naviの開始から 100ms 後であったとするなら、 `PerformanceNavigationTiming$I の~dataは次の様になるであろう: ◎ For example, if we know that the response end occurs 100ms after the start of navigation, the PerformanceNavigationTiming data could look like so:
startTime: 0.000 /* ~navi要請の開始~時刻 ◎ start time of the navigation request */ responseEnd: 100.000 /* 最後の~byteが受信された高分解能な時刻 ◎ high resolution time of last received byte */
文書の~naviに関係する正確aな計時~dataを得するために, `PerformanceNavigationTiming$I ~interfaceを利用する例を次の~scriptに示す: ◎ The following script shows how a developer can use the PerformanceNavigationTiming interface to obtain accurate timing data related to the navigation of the document:
<script> function showNavigationDetails() { /* 最初の~entryを取得する ◎ Get the first entry */ const [%entry] = performance.getEntriesByType("navigation"); /* 結果を開発者~console内に表tの~~形で示す ◎ Show it in a nice table in the developer console */ console.table(%entry.toJSON()); } </script> <body onload="showNavigationDetails()">
(結果は~consoleではなく,ここに示される)【 他~pageでも利用できる`ブックマークレット@~bookmarklet2$(結果は~consoleに示される) 】【 `~level 1 実装~用のもの@#_test_level1$もある 】
2. 各種用語
【 この節の内容うち一部は省略する。 】 ◎ The construction "a Foo object", where Foo is actually an interface, is sometimes used instead of the more accurate "an object implementing the interface Foo.
【この仕様の~APIの記述に現れる】 `現在の文書@ ( `current document^en )は、 【コレに`関連な大域~obj$である】`~window$に`結付けられた文書$を指す。 ◎ The term current document refers to the document associated with the Window object's newest Document object.
【 加えて, “前-文書” ( `previous document^en )は、 `現在の文書$へ~navigateされる前の時点で,同じ`~navigable$にて`作動中な文書$navであったものを指す(もしあれば)。 】
この仕様を通して、 時刻は,文書の~naviの開始から~milli秒数で測定される。 例えば,文書の~naviの開始は、 時刻 0 で生じる。 語 “〜の時刻” は、[ 文書の~naviの開始から その時点までに経過した~milli秒数 ]による時刻を指す。 この[ 時刻の定義 ]は、 `HR-TIME$r に基づく。 ◎ Throughout this work, all time values are measured in milliseconds since the start of navigation of the document. For example, the start of navigation of the document occurs at time 0. The term current time refers to the number of milliseconds since the start of navigation of the document until the current moment in time. This definition of time is based on [HR-TIME] specification.
4. ~navi計時~属性
【 この節は規範的ではない。 (この節の原文の~titleは “処理n~model” であるが、 処理n~modelは,各種 “計時~報” として他の仕様( `FETCH$r, `HTML$r など)に統合された。) 】 ◎ 4. Process ◎ 4.1. Processing Model
~privacyの考慮点
◎非規範的- 情報の流出 ◎ 5.1.1. Information disclosure
- 注意深く細工された計時~攻撃の利用により、 末端利用者による[ 閲覧/行動 ]の履歴が流出する可能性がある。 一例として、 ~unload時刻から前の~pageの~unload~handlerに要した時間が明らかにされ,利用者の~login状態sの推定-に利用され得る。 これらの攻撃は、 文書を~unloadするときに — `新たな~pageで~session履歴を更新する$ ~algo `HTML$r の中で — `同一-生成元$の検査を施行することにより軽減される。 ◎ There is the potential for disclosing an end-user's browsing and activity history by using carefully crafted timing attacks. For instance, the unloading time reveals how long the previous page takes to execute its unload handler, which could be used to infer the user's login status. These attacks have been mitigated by enforcing the same origin check algorithm when unloading a document, as detailed in the HTML spec.
- `緩い同一-生成元~施策$は、 文書~間に渡る,未承認の訪問に対する十分な保護を供さない。 共有d~hostにおいては、 信頼できない第三者-主体が,同じ~IP~addressの異なる~port上で~HTTP~serverを~hostし得る。 ◎ The relaxed same origin policy doesn't provide sufficient protection against unauthorized visits across documents. In shared hosting, an untrusted third party is able to host an HTTP server at the same IP address but on a different port.
- ~directory間をまたがる~access ◎ 5.1.2. Cross-directory access
- 同じ~host名を共有する異なる~page — 例えば、 同じ~siteに~hostされている,利用者が生成した内容を伴う, 異なる作者による内容 — は、 ~path名に基いて~accessを制約するような特能がないため,`同一-生成元$から来たものと見なされる。 これらの~page間の~naviに際しては、 後の~pageから,~redirectionや `unload^et ~eventに対する計時など,前の~pageの計時~情報への~accessが可能になる。 ◎ Different pages sharing one host name, for example contents from different authors hosted on sites with user generated content are considered from the same origin because there is no feature to restrict the access by pathname. Navigating between these pages allows a latter page to access timing information of the previous one, such as timing regarding redirection and unload event.
~securityの考慮点
◎非規範的`PerformanceNavigationTiming$I ~interfaceは、 前-文書についての計時~情報を`現在の文書$に公開する。 `PerformanceNavigationTiming$I の属性のうち,前-文書の情報を含むものへの~accessを制限するため、 前-文書を~unloadするときに — `新たな~pageで~session履歴を更新する$ ~algo `HTML$r の中で — `同一-生成元$施策が施行され,【失敗した場合は】前-文書に関係する属性は 0 に設定される。 ◎ The PerformanceNavigationTiming interface exposes timing information about the previous document to the current document. To limit the access to PerformanceNavigationTiming attributes which include information on the previous document, the previous document unloading algorithm enforces the same origin policy and attributes related to the previous document are set to zero.
- ~proxy~serverの検出-法 ◎ 5.2.1. Detecting proxy servers
- ~UAと~web~serverとの間に~proxyが配備されている場合、 `connectStart$m 属性と `connectEnd$m 属性との間の時区間は、 ~web~serverではなく,~proxyと~UAとの間の待時間を示すものになる。 それにより、 ~web~serverは,~proxyの存在を推定できる可能性がある。 SOCKS ~proxyについては、 この時区間には~proxy認証に要した時間と~proxyが~web~serverへの接続に要した時間も含まれ,~proxyの検出を難しくする。 ~HTTP~proxyの場合、 ~UAは~proxy~serverについての知識を一切持たないこともあるので、 この攻撃を常に軽減できるとは限らない。 ◎ In case a proxy is deployed between the user agent and the web server, the time interval between the connectStart and the connectEnd attributes indicates the delay between the user agent and the proxy instead of the web server. With that, web server can potentially infer the existence of the proxy. For SOCKS proxy, this time interval includes the proxy authentication time and time the proxy takes to connect to the web server, which obfuscate the proxy detection. In case of an HTTP proxy, the user agent might not have any knowledge about the proxy server at all so it's not always feasible to mitigate this attack.
廃用
この節では、 以前に `NAVIGATION-TIMING$r ~level 1 にて導入された[ 属性, ~interface ]を定義し,後方-互換性のために ここに保つ。 作者には、 以下の~interfaceを利用するべきでない — 新たな `PerformanceNavigationTiming$I ~interfaceを利用することを強く勧める。 `変更点と改善点の要約@#sotd$を見よ。 ◎ This section defines attributes and interfaces previously introduced in [NAVIGATION-TIMING] Level 1 and are kept here for backwards compatibility. Authors should not use the following interfaces and are strongly advised to use the new PerformanceNavigationTiming interface—see summary of changes and improvements.
【この訳( ~level 1 )に特有な表記規約】
この節にて原文が参照する~HTTP用語は,過去の~HTTP仕様 `RFC2616$r を参照しているが、 この訳では,最新な~HTTP仕様( ~RFC 9110 〜 9112 )の等価な記述を参照することにする。
用語 “前-文書( `previous document^en )” は、 `現在の文書$へ~navigateされる前の時点で,当の`~navigable$にて`作動中な文書$navであったものを指す(明確には定義されていない)。
以下における `局所~cache等@ は、[ ~HTTP~cache/局所~資源 ]を指す総称である。
`PerformanceTiming^I ~interface
[`Exposed$=Window] interface `PerformanceTiming$I { readonly attribute unsigned long long `navigationStart$1; readonly attribute unsigned long long `unloadEventStart$1; readonly attribute unsigned long long `unloadEventEnd$1; readonly attribute unsigned long long `redirectStart$1; readonly attribute unsigned long long `redirectEnd$1; readonly attribute unsigned long long `fetchStart$1; readonly attribute unsigned long long `domainLookupStart$1; readonly attribute unsigned long long `domainLookupEnd$1; readonly attribute unsigned long long `connectStart$1; readonly attribute unsigned long long `connectEnd$1; readonly attribute unsigned long long `secureConnectionStart$1; readonly attribute unsigned long long `requestStart$1; readonly attribute unsigned long long `responseStart$1; readonly attribute unsigned long long `responseEnd$1; readonly attribute unsigned long long `domLoading$1; readonly attribute unsigned long long `domInteractive$1; readonly attribute unsigned long long `domContentLoadedEventStart$1; readonly attribute unsigned long long `domContentLoadedEventEnd$1; readonly attribute unsigned long long `domComplete$1; readonly attribute unsigned long long `loadEventStart$1; readonly attribute unsigned long long `loadEventEnd$1; [`Default$] object `toJSON$1(); };
(結果は~consoleではなく,ここに示される)
【 他~pageでも利用できる`ブックマークレット@~bookmarklet1$(結果は~consoleに示される) 】【 `~level 2 実装~用のもの@#_test_level2$もある 】
注記: この節に定義されるすべての時刻~値は、 1970 年 1 月 1 日, 午前 0 時( UTC )から~milli秒数で測定される。 ◎ Note All time values defined in this section are measured in milliseconds since midnight of January 1, 1970 (UTC).
- `navigationStart@1
- 前-文書があるならば ~UAが前-文書に対し`~unloadを~prompt$し終えた直後の時刻 / ~ELSE_ 現在の文書が作成された時刻を返すモノトスル。 ◎ This attribute must return the time immediately after the user agent finishes prompting to unload the previous document. If there is no previous document, this attribute must return the time the current document is created.
- 注記: この属性は、 `PerformanceNavigationTiming$I 用には定義されていない。 作者は、 代わりに `timeOrigin$m を利用して,等価な時刻印を得せる。 ◎ Note This attribute is not defined for PerformanceNavigationTiming. Instead, authors can use timeOrigin to obtain an equivalent timestamp.
- `unloadEventStart@1
- 前-文書がある, かつ 前-文書と現在の文書が`同一-生成元$に属する場合は,~UAが前-文書の `unload^et ~eventを開始する直前の時刻 / ~ELSE_ 0 を返すモノトスル。 ◎ If the previous document and the current document have the same origin, this attribute must return the time immediately before the user agent starts the unload event of the previous document. If there is no previous document or the previous document has a different origin than the current document, this attribute must return zero.
- `unloadEventEnd@1
- 前-文書はある, かつ 前-文書と現在の文書が`同一-生成元$に属する, かつ 前-文書の `unload^et ~eventは完了している 場合は,~UAが その~eventを終えた直後の時刻 / ~ELSE_ 0 を返すモノトスル。 ◎ If the previous document and the current document have the same same origin, this attribute must return the time immediately after the user agent finishes the unload event of the previous document. If there is no previous document or the previous document has a different origin than the current document or the unload is not yet completed, this attribute must return zero.
- ~navigate時に`~HTTP~redirect$があって, かつ その中に`同一-生成元$に属さない`~HTTP~redirect$がある場合、[ `unloadEventStart$1, `unloadEventEnd$1 ]とも 0 を返すモノトスル。 ◎ If there are HTTP redirects when navigating and not all the redirects are from the same origin, both PerformanceTiming.unloadEventStart and PerformanceTiming.unloadEventEnd must return zero.
- `redirectStart@1
- ~navigate時に`~HTTP~redirect$があって, かつ すべての`~HTTP~redirect$が`同一-生成元$に属する場合は, `fetchStart$1 と同じ値 / ~ELSE_ 0 を返すモノトスル。 ◎ If there are HTTP redirects when navigating and if all the redirects are from the same origin, this attribute must return the starting time of the fetch that initiates the redirect. Otherwise, this attribute must return zero.
- `redirectEnd@1
- ~navigate時に`~HTTP~redirect$があって, かつ すべての`~HTTP~redirect$が`同一-生成元$に属する場合は,その最後の~redirectを成す応答の最後の~byteを受信した直後の時刻 / ~ELSE_ 0 を返すモノトスル。 ◎ If there are HTTP redirects when navigating and all redirects are from the same origin, this attribute must return the time immediately after receiving the last byte of the response of the last redirect. Otherwise, this attribute must return zero.
- `fetchStart@1
- `GET^hm `要請~method$を利用して新たな資源が`~fetch$された場合は,~UAが~HTTP~cacheの検査を開始する直前の時刻 / ~ELSE_ ~UAが資源の`~fetch$を開始した時刻 を返すモノトスル。 ◎ If the new resource is to be fetched using a "GET" request method, fetchStart must return the time immediately before the user agent starts checking the HTTP cache. Otherwise, it must return the time when the user agent starts fetching the resource.
- `domainLookupStart@1
- 現在の文書の~domain名~検索を開始する直前の時刻を返すモノトスル。 `持続的な接続$が利用されている,または 現在の文書が`局所~cache等$から検索取得されている場合、 この属性は `fetchStart$1 と同じ値を返すモノトスル。 ◎ This attribute must return the time immediately before the user agent starts the domain name lookup for the current document. If a persistent connection [RFC2616] is used or the current document is retrieved from the HTTP cache or local resources, this attribute must return the same value as PerformanceTiming.fetchStart.
- `domainLookupEnd@1
- ~UAが現在の文書に対する~domain名~検索を終えた直後の時刻を返すモノトスル。 `持続的な接続$が利用されている,または 現在の文書が`局所~cache等$から検索取得されている場合、 この属性は `fetchStart$1 と同じ値を返すモノトスル。 ◎ This attribute must return the time immediately after the user agent finishes the domain name lookup for the current document. If a persistent connection [RFC2616] is used or the current document is retrieved from the HTTP cache or local resources, this attribute must return the same value as PerformanceTiming.fetchStart.
- 注記: `~HTTP~cache$からの内容の 検査と検索取得は`~fetching$の一部である。 それは、[ `requestStart$1, `responseStart$1, `responseEnd$1 ]属性が受持つ。 ◎ Note Checking and retrieving contents from the HTTP cache [RFC2616] is part of the fetching process. It's covered by the PerformanceTiming.requestStart, PerformanceTiming.responseStart and PerformanceTiming.responseEnd attributes.
- 注記: ~UAが~cache内に~domain情報をすでに持っている場合、[ `domainLookupStart$1, `domainLookupEnd$1 ]は,順に,~UAによる~cacheからの~domain~dataの検索取得を[ 開始, 終了 ]した時刻を表現する。 ◎ Note In case where the user agent already has the domain information in cache, domainLookupStart and domainLookupEnd represent the times when the user agent starts and ends the domain data retrieval from the cache.
- `connectStart@1
- ~UAが文書を検索取得するために~serverへの接続を確立し始める直前の時刻を返すモノトスル。 `持続的な接続$が利用されている,または 現在の文書が`局所~cache等$から検索取得されている場合、 この属性は `domainLookupEnd$1 と同じ値を返すモノトスル。 ◎ This attribute must return the time immediately before the user agent start establishing the connection to the server to retrieve the document. If a persistent connection [RFC2616] is used or the current document is retrieved from the HTTP cache or local resources, this attribute must return value of PerformanceTiming.domainLookupEnd.
- `connectEnd@1
- ~UAが文書を検索取得するための~serverへの接続を確立し終えた直後の時刻を返すモノトスル。 `持続的な接続$が利用されている,または 現在の文書が`局所~cache等$から検索取得されている場合、 この属性は `domainLookupEnd$1 と同じ値を返すモノトスル。 ◎ This attribute must return the time immediately after the user agent finishes establishing the connection to the server to retrieve the current document. If a persistent connection [RFC2616] is used or the current document is retrieved from the HTTP cache or local resources, this attribute must return the value of PerformanceTiming.domainLookupEnd.
- ~transport接続が失敗し, かつ~UAが接続を再び開いた場合、[ `connectStart$1, `connectEnd$1 ]は,新たな接続に対応する値を返すべきである。 ◎ If the transport connection fails and the user agent reopens a connection, PerformanceTiming.connectStart and PerformanceTiming.connectEnd should return the corresponding values of the new connection.
- `connectEnd$1 には、 SSL ~handshakeや SOCKS 認証も含めて,~transport接続を確立するのに要した時間も含めるモノトスル。 ◎ PerformanceTiming.connectEnd must include the time interval to establish the transport connection as well as other time interval such as SSL handshake and SOCKS authentication.
- `secureConnectionStart@1
- この属性の~supportは任意選択~である。 ~UAは、 この属性を可用にしない場合は, `undefined^c を返すモノトスル。 可用にする場合、[[ 現在の~pageの`~URL~scheme$ `URL$r ~EQ `https^l ]ならば 現在の接続を~secureにするための~handshake処理-を開始する直前の時刻 / ~ELSE_ 0 ]を返すモノトスル。 ◎ This attribute is optional. User agents that don't have this attribute available must set it as undefined. When this attribute is available, if the scheme [URL] of the current page is "https", this attribute must return the time immediately before the user agent starts the handshake process to secure the current connection. If this attribute is available but HTTPS is not used, this attribute must return zero.
- `requestStart@1
- ~UAが,現在の文書を[ ~serverから, または`局所~cache等$から ]得るために 要請を開始した直前の時刻を返すモノトスル。 ◎ This attribute must return the time immediately before the user agent starts requesting the current document from the server, or from the HTTP cache or from local resources.
- 要請を送信した後に~transport接続が失敗して, ~UAが接続を再び開いて要請を送信し直していた場合、 `requestStart$1 は,新たな要請に対応している値を返すべきである。 ◎ If the transport connection fails after a request is sent and the user agent reopens a connection and resend the request, PerformanceTiming.requestStart should return the corresponding values of the new request.
-
注記: この~interfaceには
requestEnd
のような類いの,要請の送信の完了を表現する属性は含まれていない: ◎ Note This interface does not include an attribute to represent the completion of sending the request, e.g., requestEnd.- ~UAからの要請の送信の完了は、 (その種の属性の便益のほとんどを占める)~network~transportにおける対応する完了時刻を常に指示するとは限らない。 ◎ Completion of sending the request from the user agent does not always indicate the corresponding completion time in the network transport, which brings most of the benefit of having such an attribute.
- 一部の~UAにおいては、 ~HTTP層の~capsule化に因り, 要請の送信を実際に完了した時刻を決定するのに~costがかかる。 ◎ Some user agents have high cost to determine the actual completion time of sending the request due to the HTTP layer encapsulation.
- `responseStart@1
- ~UAが~serverからの, または`局所~cache等$からの,応答の最初の~byteを受信した直後の時刻を返すモノトスル。 ◎ This attribute must return the time immediately after the user agent receives the first byte of the response from the server, or from the HTTP cache or from local resources.
- `responseEnd@1
- ~UAが 現在の文書の最後の~byteを受信した直後の時刻と, ~transport接続が閉じらる直前の時刻のうち,早い方を返すモノトスル。 ここでの文書は、[ ~server, `局所~cache等$ ]いずれかから受信されたものも含まれる。 ◎ This attribute must return the time immediately after the user agent receives the last byte of the current document or immediately before the transport connection is closed, whichever comes first. The document here can be received either from the server, the HTTP cache or from local resources.
- `domLoading@1
- ~UAが文書の`現在の準備度$docを `loading^l に設定する直前の時刻を返すモノトスル。 ◎ This attribute must return the time immediately before the user agent sets the current document readiness to "loading".
- 既存の~UA内で`文書$が いつ作成されたかの違いに因り,この属性が返す値は実装に特有であり、 有意義な計量に利用されるべきではない。 ◎ Due to differences in when a Document object is created in existing user agents, the value returned by the domLoading is implementation specific and should not be used in meaningful metrics.
- `domInteractive@1
- ~UAが文書の`現在の準備度$docを `interactive^l に設定する直前の時刻を返すモノトスル。 ◎ This attribute must return the time immediately before the user agent sets the current document readiness to "interactive".
- `domContentLoadedEventStart@1
- ~UAが`文書$に向けて `DOMContentLoaded$et ~eventを発火する直前の時刻を返すモノトスル。 ◎ This attribute must return the time immediately before the user agent fires the DOMContentLoaded event at the Document.
- `domContentLoadedEventEnd@1
-
文書の
DOMContentLoaded
~event が完了した直後の時刻を返すモノトスル。 ◎ This attribute must return the time immediately after the document's DOMContentLoaded event completes. - `domComplete@1
- ~UAが文書の`現在の準備度$docを `complete^l に設定する直前の時刻を返すモノトスル。 ◎ This attribute must return the time immediately before the user agent sets the current document readiness to "complete".
- 文書の`現在の準備度$docが複数回にわたり同じ状態に変化した場合、 `domLoading$1, `domInteractive$1, `domContentLoadedEventStart$1, `domContentLoadedEventEnd$1, `domComplete$1 は、 最初に生じた 文書の`現在の準備度$docの変化に対応している時刻を返すモノトスル。 ◎ If the current document readiness changes to the same state multiple times, PerformanceTiming.domLoading, PerformanceTiming.domInteractive, PerformanceTiming.domContentLoadedEventStart, PerformanceTiming.domContentLoadedEventEnd and PerformanceTiming.domComplete must return the time of the first occurrence of the corresponding document readiness change.
- `loadEventStart@1
- 現在の文書に `load^et ~eventが発火される直前の時刻を返すモノトスル。 `load^et ~eventがまだ発火されていないときには、 0 を返すモノトスル。 ◎ This attribute must return the time immediately before the load event of the current document is fired. It must return zero when the load event is not fired yet.
- `loadEventEnd@1
- 現在の文書の `load^et ~eventの発火-が完了した時刻を返すモノトスル。 `load^et ~eventがまだ発火されていない, またはまだ完了していないときには、 0 を返すモノトスル。 ◎ This attribute must return the time when the load event of the current document is completed. It must return zero when the load event is not fired or is not completed.
- `toJSON@1
- コレ用の`既定の~toJSON手続き$を走らす。 ◎ Runs the default toJSON steps for this.
`Performance^I ~interfaceに対する拡張
[`Exposed$=Window] partial interface `Performance^I { [`SameObject$] readonly attribute `PerformanceTiming$I `timing$1; [`SameObject$] readonly attribute `PerformanceNavigation$I `navigation$1; };
`Performance^I ~interfaceは `PERFORMANCE-TIMELINE-2$r にて定義される。 【! ~TIMELINE#extensions-to-the-performance-interface】 ◎ The Performance interface is defined in [PERFORMANCE-TIMELINE-2].
- `timing@1
- 最後の非~redirect ~navi以降の`閲覧~文脈$に関係する計時~情報を表現する。 ◎ The timing attribute represents the timing information related to the browsing contexts since the last non-redirect navigation.\
- この属性は `PerformanceTiming$I ~interfaceにより定義される。 ◎ This attribute is defined by the PerformanceTiming interface.
- `navigation@1
- この属性は `PerformanceNavigation$I ~interfaceにより定義される。 ◎ The navigation attribute is defined by the PerformanceNavigation interface.
謝辞
貢献された次の方々に感謝する:
Thanks to Anne Van Kesteren, Arvind Jain, Boris Zbarsky, Jason Weber, Jonas Sicking, James Simonsen, Karen Anderson, Nic Jansma, Philippe Le Hegaret, Steve Souders, Todd Reifsteck, Tony Gentilcore, William Chan and Zhiheng Wang for their contributions to this work.