- From: Peter Lepeska <bizzbyster@gmail.com>
- Date: Wed, 26 Nov 2014 09:36:58 -0500
- To: Nic Jansma <nic@nicj.net>
- Cc: Steve Souders <steve@souders.org>, Yoav Weiss <yoav@yoav.ws>, public-web-perf <public-web-perf@w3.org>
- Message-ID: <CANmPAYGJR6PtWrxYR8A8xSwBRBeV=RNNq6bT2LAJtnL95cK5ZQ@mail.gmail.com>
+1 On Tue, Nov 25, 2014 at 12:31 PM, Nic Jansma <nic@nicj.net> wrote: > Good point! Hadn't considered that, so yes I would agree it's a very > valuable addition to consider. > > As far as what interface to put it on, I'm not sure networkDuration would > make sense for UserTiming, for example. While it could sit on > PerformanceEntry and just be "0" for interfaces that aren't applicable, we > could also create a PerformanceNetworkEntry interface (with > networkDuration) that PerformanceResourceTiming inherits from, while > PerformanceUserTiming only inherits from PerformanceEntry. > > That's all minor details though. Really depends on the browser privacy > teams OK'ing the addition. > > - Nichttp://nicj.net/ > @NicJ > > On 11/25/2014 12:16 PM, Steve Souders wrote: > > Nic - > > You can *not* calculate networkDuration from other attributes for > *cross-origin* resources. That's why I'm suggesting adding this to > PerformanceEntry (rather than PerformanceResourceTiming). > > And as mentioned, about 50% of resources are cross-origin so it's > important to provide a means for *accurate* download time measurements. > > -Steve > > > On 11/25/14, 8:02 AM, Nic Jansma wrote: > > Steve, > > The only downside I see is that we're adding a new attribute that can be > entirely calculated via other attributes. > > One alternate (or additional thing) would be to highlight this point in > the description for "duration" in the spec. > > - Nichttp://nicj.net/ > @NicJ > > On 11/25/2014 3:04 AM, Yoav Weiss wrote: > > > On Tue, Nov 25, 2014 at 1:34 AM, Steve Souders <steve@souders.org> wrote: > >> SHORT: I propose we add the "networkDuration" property to >> PerformanceEntry >> <http://www.w3.org/TR/performance-timeline/#performanceentry> objects. >> >> LONG: A few weeks ago I discovered that "duration" includes blocking >> time, so "duration" is greater than the actual network time needed to >> download the resource. Since then I've been at Velocity and WebPerfDays >> where many people have shown their Resource Timing code. Everyone I spoke >> to (~5 different teams) assumed that "duration" was just the network time. >> When I explain that it also includes blocking they were surprised, admitted >> they hadn't known that, and agreed it is NOT the metric they were trying to >> capture. >> >> I propose we add a new property to Resource Timing that reflects the time >> to actually load the resource excluding blocking time. I'm flexible about >> the name but for purposes of this discussion let's call it >> "networkDuration". The important piece of this proposal is that >> "networkDuration" should be available for all resources, similar to >> "duration". In other words, it should be available for same origin as well >> as cross origin resources as part of the PerformanceEntry >> <http://www.w3.org/TR/performance-timeline/#performanceentry> interface. >> >> Same origin resources can calculate "networkDuration" as follows (assume >> "r" is a PerformanceResourceTiming >> <http://?ui=2&ik=b493d86064&view=att&th=149e4608a5dad0d6&attid=0.1.1&disp=emb&zw&atsh=0> >> object): >> >> dns = r.domainLookupEnd - r.domainLookupStart; >> tcp = r.connectEnd - r.connectStart; // includes ssl >> negotiation >> waiting = r.responseStart - r.requestStart; // aka "TTFB" >> content = r.responseEnd - r.responseStart; >> networkDuration = dns + tcp + waiting + content; >> >> I've discussed this with a few people and the only concern I've heard is >> with regard to privacy along the lines of "if we exclude blocking we've >> added the ability to distinguish cache reads from network fetches". This >> isn't an issue for two reasons: >> >> 1. Even with the exclusion of blocking time, it's still possible for >> "networkDuration" to have a non-zero value for resources read from cache >> due to disk access time, etc. Therefore, excluding blocking time does not >> necessarily provide a clear means of determining resources read from cache. >> 2. This concern assumes that adding "networkDuration" lessens privacy >> because removing blocking time provides additional information that is not >> available today. However, it's possible to exclude blocking time today by >> loading a cross-origin resource after window.onload, when there is no >> blocking contention. >> >> Therefore, individuals who have JavaScript access to a page and can >> measure duration also have enough access to load resources after >> window.onload and can thus determine the duration excluding blocking time. >> Adding "networkDuration" does not give these individuals additional >> information beyond what is measurable today. >> >> What "networkDuration" provides is additional information for the normal >> case of resources that are loaded as part of the main page when blocking >> contention may occur. This will give current web developers the metric they >> want for cross-origin resources, and will provide it more simply for same >> origin resources. >> > > Assuming that the privacy concerns are in fact non-existent, a big +1. > > > > >
Received on Wednesday, 26 November 2014 14:37:25 UTC