이 스펙문서는, 성능 측정 데이터 검색 및 기록을 하기 위한 통합 인터페이스를 정의합니다. 이 스펙문서는 개별 성능 측정 인터페이스에 대한 내용까지 다루지 않습니다.
이 문서의 상태이 섹션은 이 문서를 공개했을 때 상태에 대해 설명합니다. 다른 문서가 이 문서를 덮어쓸 가능성이 있으니 주의하시길 바랍니다. 이 문서 및 W3C에서 공개한 다른 문서의 최신 버전은 W3C technical reports index at http://www.w3.org/TR/에서 확인 가능합니다.
이 문서는 Web Performance 워킹 그룹에서 제공하는 "성능 타임라인 스펙문서"의 W3C 권고안입니다. 2013년 8월 제공한 구현 보고서도 확인 가능합니다.
이 문서는 이전 버전 문서에서 변경내용이 없습니다.
이 문서를 권고안으로 발행함으로써, W3C는 성능 타임라인 권고안이 Web IDL 문서의 권고안 제정단계 진행으로 인한 영향을 받지 않을거라 기대하고 있습니다.
코멘트는 public-web-perf@w3.org (archived)로 보내주시길 바라며, 제목을 [PerformanceTimeline]으로 시작하시길 바랍니다.
이 문서는 W3C 멤버, 소프트웨어 개발자, 그리고 다른 W3C 그룹 및 관계자들이 평가를 진행하여, 디렉터에 의해 W3C 권고안으로 발표했습니다. 이 문서는 안정적이며, 참고자료로 사용하거나 다른 문서에서 인용해도 좋습니다. 스펙 문서의 권고를 통해 W3C가 하는 역할은 스펙 문서에 관심을 모으고 다방면으로 퍼뜨리는 일입니다. 이를 통해 웹의 기능과 상호운용성 향상을 기대할 수 있습니다.
이 문서는 2004년 2월 6일 W3C 특허 정책을 따르는 그룹에서 작성하였습니다. W3C는 그룹의 성과물에 관련하여 모든 공개 특허 공개 리스트를 관리합니다. 여기에는 특허 공개에 대한 지시사항도 포함합니다. 특허에 대해서 충분한 지식이 있는 사람이, 스펙 문서의 Essential Claim(s)에 인정된다고 파악되는 경우, W3C 특허 정책 제 6장에 의거하여 정보를 공개해야 할 필요가 있습니다.
목차 1 소개이 섹션은 표준에 준하지 않습니다.
웹 어플리케이션의 성능 정보를 정확히 측정하는 건 웹 어플리케이션을 보다 빠르게 하고자 할 때 중요한 면이 됩니다. [Navigation Timing], [Resource Timing], [User Timing]은 이 스펙문서 내에서 문서의 네비게이션, 페이지상 리소스, 개발자 스크립트와 관련있는 타이밍 정보를 정의하는 예제입니다.
이런 인터페이스 및 미래에 추가될 다른 것들은, 웹 어플리케이션의 성능 타임라인을 실현하는 성능 측정을 정의합니다. 이 스펙문서는 웹 어플리케이션 성능 타임라인에서 다양한 성능 지표를 검색하고 접속하기 위한 통합 인터페이스를 제공합니다.
아래 스크립트는 개발자가 문서 네비게이션, 페이지상 리소스, 개발자 스크립트와 관련있는 타이밍 데이터를 얻기 위한 PerformanceEntry
인터페이스를 이용하는 방법을 나타냅니다.
<!doctype html> <html> <head> </head> <body onload="init()"> <img id="image0" src="http://w3c-test.org/webperf/image0.png" /> <script> function init() { performance.mark("startWork"); // see [User Timing] doWork(); // Some developer code performance.mark("endWork"); measurePerf(); } function measurePerf() { var perfEntries = performance.getEntries(); for (var i = 0; i < perfEntries.length; i++) { if (window.console) console.log("Name: " + perfEntries[i].name + " Entry Type: " + perfEntries[i].entryType + " Start Time: " + perfEntries[i].startTime + " Duration: " + perfEntries[i].duration + "\n"); } } </script> </body> </html>2 적합 요구사항
이 스펙문서 안에서 모든 다이어그램, 예제, 노트 및 표준이 아니라 명시한 섹션은 모두 표준이 아닙니다. 그 외의 모든 내용은 표준입니다.
이 스펙 문서 내 키워드 "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", "OPTIONAL"는 RFC 2119에 기술되어있는대로 해석합니다. 가독성을 위해, 이 스펙문서에서 이 키워드들을 모두 대문자로 표기하지는 않습니다.
알고리즘 중 명령적 표현에 따른 요건(예를 들면: "선두 공백문자열 제거", "false를 반환하여 이 절차를 완료" 등) 은 알고리즘을 도입할 때 사용할 수 있는 키워드("must", "should", "may", etc)의 의미로 해석합니다.
일부 적합성 요구사항은 속성, 메소드, 오브젝트에 대한 요구사항으로 언급합니다. 이러한 요구 사항은 사용자 에이전트(UA)에 부과하는 요구사항으로 해석해야 합니다.
알고리즘 또는 특정 스텝으로 기록하는 적합성 요구사항은 최종 결과가 같은 값인 경우, 어떤 방식으로 구현해도 상관 없습니다. (특히, 이 스펙 문서에서 정의하는 알고리즘은 쫓기 쉽도록 기술되어 있어, 성능을 고려하지 않습니다)
이 스펙의 IDL 코드는 Web IDL 스펙에서 언급한 적합 IDL 코드에 부과한 요구 사항에 따르는 것으로 해석해야 합니다. [Web IDL]
3 용어Foo
를 인터페이스로 할 때, "Foo
인터페이스를 구현하는 객체"의 약자로 "Foo
객체"를 사용합니다.
이 작업을 통해, 모든 시간값은 문서 네비게이션 시작을 기점으로 밀리초 단위로 측정됩니다. 예를 들어, 문서 네비게이션 시작 시간은 0부터 시작합니다. 용어 현재 시간 (current time)은 문서 네비게이션 시작 시점부터 그 시점까지 경과한 시간을 밀리초로 나타냅니다. 이러한 시간 정의는 High Resolution Time 스펙 문서[High Resolution Time]에 기준을 두고 있으며, 1970년 1월 1일 0시 0분 0초 (UTC)를 기점으로 하는 Navigation Timing 스펙 문서[Navigation Timing]와 다릅니다.
4 성능 타임라인 4.1 The Performance TimelinePerformanceResourceTiming
[Resource Timing], PerformanceMark
, 및 PerformanceMeasure
[User Timing] 인터페이스 같은 Performance Timeline에 포함되어있는 모든 인터페이스는 반드시 아래 룰을 따라야 합니다. [must]
PerformanceEntry
인터페이스를 확장해야합니다.getEntries
, getEntriesByType
와 getEntriesByName
메서드를 지원해야 합니다.PerformanceEntry
인터페이스
interface PerformanceEntry { readonly attribute DOMString name; readonly attribute DOMString entryType; readonly attribute DOMHighResTimeStamp startTime; readonly attribute DOMHighResTimeStamp duration; };
name
속성
name
속성은 반드시 이 PerformanceEntry
객체의 식별자를 리턴해야 합니다. 이 식별자는 유니크하지 않아도 괜찮습니다.
entryType
속성
entryType
속성은 반드시 이 PerformanceEntry
객체에 의해 나타나는 인터페이스의 타입을 설명하는 DOMString
을 리턴해야 합니다.
startTime
속성
startTime
속성은 반드시 이 퍼포먼스 측정값에서 최초로 기록된 타임스탬프의 time 값을 포함하고 있는, DOMHighResTimeStamp
을 리턴해야 합니다.
duration
속성
duration
속성은 반드시 이 PerformanceEntry
에 의해 기록된 전체 이벤트 기간동안의 time 값을 포함한 DOMHighResTimeStamp
를 반환해야합니다. 물리적으로 이 값은 PerformanceEntry
에 기록된 최초 타임스탬프와 마지막 타임스탬프 사이의 시간 차입니다. 성능 값은 사이값을 계산하는 스펙이 반영되지 않았다면 duration
값을 0으로 반환해도 좋습니다.
Performance
인터페이스 확장
partial interface Performance { PerformanceEntryList getEntries(); PerformanceEntryList getEntriesByType(DOMString entryType); PerformanceEntryList getEntriesByName(DOMString name, optional DOMString entryType); }; typedef sequence <PerformanceEntry> PerformanceEntryList;
window.performance
속성은 Performance
인터페이스 [Navigation Timing]를 사용하는 퍼포먼스 측정에 관련한 속성과 메서드를 유지할 수 있는 공간을 제공합니다.
만약 실험적인 PerformanceEntry
객체를 생성하는데 벤더 독자의 유저 에이전트 확장이 필요한 경우, entryType
속성을 얻고자 할 때, 벤더는 반드시 아래와 같은 컨벤션을 따라 DOMString을 반환해야 합니다.
[vendorprefix]-[entrytype]
여기서,
[vendorprefix]
는 대문자가 아닌 벤더 식별자이며,[entrytype]
은 대문자가 아닌 이 PerformanceEntry
객체를나타내는 인터페이스의 type을 주는 이름이며,We would like to offer our sincere thanks to all the people that we have been in touch with regarding this draft for their reviews and feedback.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.3