Sometimes Web standards can converge quickly. The W3C standard for Navigation Timing started about six months ago in the newly chartered Web Performance Working Group. The working group’s objective is to provide interoperable features that enable developers to measure and improve performance of their Web applications.
Navigation Timing is the first specification from this this W3C working group, and in only six months went from a Working Draft to Candidate Recommendation. The community and representatives of Microsoft, Google, Mozilla, Opera, and Facebook worked together in an agile way to deliver a standard that works in IE9 and Chrome and will likely come to other browsers soon.
The status Candidate Recommendation (CR) means that there is consensus agreement among participants at the W3C that the standard is “is stable and appropriate for implementation.” The W3C Directors can then call for implementations. The next step after the call for implementations is Proposed Recommendation, the final endorsement by the W3C.
Internet Explorer 9 Release Candidate and Chrome 10 Beta both offer vendor-neutral implementations of Navigation Timing. This means that Navigation Timing is an interoperable API and is ready for use by Web-developers today. The third IE9 Platform Preview was the first implementation of Navigation Timing, and IE9 was the first full browser to implement the specification with a vendor prefix. While transitioning from Last Call to Candidate Recommendation in the W3C, IE9 and Chrome removed the prefix. Now, Web-developers have access to performance information about their Web sites in an interoperable way.
In the Release Candidate build of Internet Explorer 9, we removed the vendor prefix and moved towards the namespace window.performance. Underneath the performance namespace you’ll find two interfaces, navigation and timing. Navigation focuses on describing the type of browsing and browsing activity such as the number of server-side redirections that occurred while retrieving the root document, while the timing interface contains the time taken to fetch and load the root document.
To protect consumers from malicious sites, Internet Explorer 9 follows the specification and zeros out the timings for third-party sites that an attacker may attempt to use to determine your browsing history. Analyzing which third-party sites have a faster cross-site access time could reveal cache information.
With two implementations available, moving towards Proposed Recommendation should not take very long. You can see the Navigation Timing interface in action on the IE9 Test Drive. Submit your feedback so the working group can make sure we have designed and implemented an interface that meets your needs.
Special thanks go to Arvind Jain, Steve Souders, Zhiheng Wang, James Simonsen, and Tony Gentilcore from Google, Jonas Sicking from Mozilla, Sigbjørn Vik from Opera, and Jason Sobel from Facebook for their contributions to this work.
The working group has now turned our attention toward Resource Timing and User Timing, capabilities that enable developers to measure the performance of individual site resources and script. We expect these specifications to follow a similar implementation path over the next year.
—Jason Weber, Performance Lead, Internet Explorer