이 문서는 Performance Timeline (W3C Recommendation 12 December 2013)의 한국어 번역본입니다.
이 문서에 오역 및 오타를 포함할 수 있습니다. 가능하면 원문도 확인하시길 바랍니다.
이 문서의 표준 내용 변경을 포함하고 있을 수 있는 errata를 확인하시길 바랍니다.
번역본도 제공합니다.
Copyright © 2013 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C liability, trademark and document use rules apply.
이 스펙문서는, 성능 측정 데이터 검색 및 기록을 하기 위한 통합 인터페이스를 정의합니다. 이 스펙문서는 개별 성능 측정 인터페이스에 대한 내용까지 다루지 않습니다.
이 섹션은 이 문서를 공개했을 때 상태에 대해 설명합니다. 다른 문서가 이 문서를 덮어쓸 가능성이 있으니 주의하시길 바랍니다. 이 문서 및 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장에 의거하여 정보를 공개해야 할 필요가 있습니다.
이 섹션은 표준에 준하지 않습니다.
웹 어플리케이션의 성능 정보를 정확히 측정하는 건 웹 어플리케이션을 보다 빠르게 하고자 할 때 중요한 면이 됩니다. [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>
이 스펙문서 안에서 모든 다이어그램, 예제, 노트 및 표준이 아니라 명시한 섹션은 모두 표준이 아닙니다. 그 외의 모든 내용은 표준입니다.
이 스펙 문서 내 키워드 "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", "OPTIONAL"는 RFC 2119에 기술되어있는대로 해석합니다. 가독성을 위해, 이 스펙문서에서 이 키워드들을 모두 대문자로 표기하지는 않습니다.
알고리즘 중 명령적 표현에 따른 요건(예를 들면: "선두 공백문자열 제거", "false를 반환하여 이 절차를 완료" 등) 은 알고리즘을 도입할 때 사용할 수 있는 키워드("must", "should", "may", etc)의 의미로 해석합니다.
일부 적합성 요구사항은 속성, 메소드, 오브젝트에 대한 요구사항으로 언급합니다. 이러한 요구 사항은 사용자 에이전트(UA)에 부과하는 요구사항으로 해석해야 합니다.
알고리즘 또는 특정 스텝으로 기록하는 적합성 요구사항은 최종 결과가 같은 값인 경우, 어떤 방식으로 구현해도 상관 없습니다. (특히, 이 스펙 문서에서 정의하는 알고리즘은 쫓기 쉽도록 기술되어 있어, 성능을 고려하지 않습니다)
이 스펙의 IDL 코드는 Web IDL 스펙에서 언급한 적합 IDL 코드에 부과한 요구 사항에 따르는 것으로 해석해야 합니다. [Web IDL]
Foo
를 인터페이스로 할 때,
"Foo
인터페이스를 구현하는 객체"의 약자로
"Foo
객체"를 사용합니다.
이 작업을 통해, 모든 시간값은 문서 네비게이션 시작을 기점으로 밀리초 단위로 측정됩니다. 예를 들어, 문서 네비게이션 시작 시간은 0부터 시작합니다. 용어 현재 시간 (current time)은 문서 네비게이션 시작 시점부터 그 시점까지 경과한 시간을 밀리초로 나타냅니다. 이러한 시간 정의는 High Resolution Time 스펙 문서[High Resolution Time]에 기준을 두고 있으며, 1970년 1월 1일 0시 0분 0초 (UTC)를 기점으로 하는 Navigation Timing 스펙 문서[Navigation Timing]와 다릅니다.
PerformanceResourceTiming
[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
을 리턴해야 합니다.
Web Performance/entryType 위키 페이지에서 현재까지 알려진 entryType
값 전체 목록을 확인할 수 있습니다.
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]를 사용하는 퍼포먼스 측정에 관련한 속성과 메서드를 유지할 수 있는 공간을 제공합니다.
getEntries
methodgetEntries
메서드는 startTime에서 시간순으로 나열한 PerformanceEntry
객체의 모든 복사본을 포함하는 PerformanceEntryList
객체를 반환합니다.
getEntriesByType
methodgetEntriesByType
메서드는 startTime에서 시간순으로 나열한 PerformanceEntry
객체중 PerformanceEntry
의 속성 entryType
이 인수 entryType
와 같은 PerformanceEntry
객체의 모든 복사본을 포함하는 PerformanceEntryList
객체를 반환합니다.
인수
DOMString
entryType
PerformanceEntryList
객체는 PerformanceEntry
객체의 속성 entryType
값이 인수 entryType
값과 동일한 값을 가진 PerformanceEntry
복사본을 포함하고 있어야 합니다.
만약 같은 속성값을 가진 PerformanceEntry
객체가 존재하지 않는다면 PerformanceEntryList
는
반드시 비어있어야 합니다.
리턴 값
PerformanceEntryList
객체.
예외 없음
getEntriesByName
method
getEntriesByName
메서드는 startTime 순서대로 정렬되어 있으며 PerformanceEntry
객체의 속성 name
값이 인수 name
값과 같은 PerformanceEntry
객체이거나, 만약 정의되어있다면, PerformanceEntryList
의 entryType
속성 값이 인수 entryType
과 동일한 PerformanceEntryList
객체의 복사본을 포함한 PerformanceEntryList
객체를 반환합니다.
인수
DOMString
name
PerformanceEntry
객체의 name
값이 인수 name
값과 동일한 PerformanceEntry
객체의 복사본을 포함한 PerformanceEntryList
객체.
만약 같은 속성값을 가진 PerformanceEntry
객체가 존재하지 않는다면, PerformanceEntryList
객체는 반드시 비어있어야 합니다.
DOMString
entryType
PerformanceEntry
객체의 entryType
값이 인수 entryType
값과 동일하거나 PerformanceEntry
객체의 name
값이 인수 name
값PerformanceEntry
객체의 복사본을 포함한 PerformanceEntryList
객체.
만약 같은 속성값을 가진 PerformanceEntry
객체가 존재하지 않는다면, PerformanceEntryList
객체는 반드시 비어있어야 합니다.
리턴 값
PerformanceEntryList
객체.
예외 없음
만약 실험적인 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.