Closed Bug 819685 Opened 12 years ago Closed 8 years ago

HTTP channels report timings for DNS even if they read from cache?

Categories

(Core :: Networking: HTTP, defect)

x86
macOS
defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 1123920

People

(Reporter: bzbarsky, Assigned: valentin)

References

Details

STEPS TO REPRODUCE:

1)  Load http://w3c-test.org/webperf/tests/submission/W3C/NavigationTiming/monolitic.html
2)  Hit the reload button

ACTUAL RESULTS: The "connectStart-domainLookupEnd" test fails.

EXPECTED RESULTS: No failures with the above steps

ANALYSIS:

As far as I can tell, we never end up with a connectStart in the transaction timings, so the DOM API returns the fetchStart value when asked for connectStart.  But we _do_ end up with DNS timings from our mDNSPrefetch, because we do that no matter whether we're reading from cache.  And of course the domainLookupEnd from the mDNSPrefetch comes after fetchStart.

Can we either kill off the DNS prefetch or at least ignore its timings in cases when we end up not using its results?
If the DNS prefetch in this scenario is a potential pref issue, then I'm definitely for to remove it.  I don't have data right now to decide.

I can look how complicated would be to ignore domainLookupEnd when loading from cache.

We also preconnect before a cache entry opens and before we can decide whether to do a net request at all, if I recall correctly.  Then there could be a dns lookup anyway.  Hence some code to ignore/nullify the domainLookupEnd might be appropriate.
Assignee: nobody → honzab.moz
This testcase is now part of the official test suite for the spec at http://w3c-test.org/webperf/tests/approved/navigation-timing/html5/test_timing_attributes_order.html
Valentin, do you think you could find time to look at this?
Assignee: honzab.moz → valentin.gosu
This is no longer reproducible. The bug is more or less the same as bug 1123920.
The solution was to enforce the correct order of the timing objects by returning the previous timing order-wise when one of them was missing. So when connectStart is null because we loaded from the cache, we return domainLookupEnd instead of fetchStart.
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.