RE: communicating server timing data to the client.. Server Timing?

We (Bing) also do data center and server time via the client through a couple of different methods. Adds all of the relevant timestamps to the single callback with navigation timing info. Reduces the need to merge logs, improves real-time issue diagnosis, etc.

I’m sure having it as a standardized method would be nice, but I also know that we routinely change what information needs to be passed around as needs shift, new problems arise, etc. I’m trying to understand how having this as a standard would improve the situation over how we currently do things. To compare it with Nav Timing, in the old way the timers got in the way, there were events only the browser was aware of, not the page, etc. So Nav had to be built into the browser to work. This (server timing) doesn’t, as best I can tell.

What’s the case that this solves that requires it to be built in?


From: Ilya Grigorik []
Sent: Monday, November 10, 2014 10:18 AM
To: Ben Maurer
Cc: public-web-perf
Subject: Re: communicating server timing data to the client.. Server Timing?

Hmm, so the data center use case is fairly common. Interesting.

It's not clear to me what the best route is to tackle non-timing data... currently, all of our specs are surfacing timing events. A couple of routes:

1) Record non-timing data as timing events - e.g. pop=22 would be surfaced as a timing event with duration of 22ms... but, in reality, you'd be communicating that you used pop #22, which is something your application could know an process accordingly. Pro: simple, no spec or UA changes required. Con: we're polluting the timeline, which would become a problem once UA's start surfacing these events in their devtools, etc.

2) We extend timing events with some form of annotations [1]. Assuming that exists, you could annotate existing timing event(s) with relevant meta-data - e.g. cache=23;nyc --> { name: 'cache', duration: 23.0, meta: 'nyc' }, where 'nyc' is an arbitrary string that could, for example, be used to indicate the data center.

If we go down the route of adding annotations, it seems like it's something that should be available on all timing events. That said, I'd love to hear more use cases for it.

Thoughts / comments?


On Mon, Nov 10, 2014 at 8:05 AM, Ben Maurer <<>> wrote:
How would this handle pages that are rendered incrementally where full timing data isn't available with headers?

You'd have to use trailer headers - stream the page, then emit the Server-Timing header at the end.


Received on Monday, 10 November 2014 18:45:56 UTC