Measuring time to interactivity for modern Web pages

Everyone agrees that web pages should load more quickly. However, a good definition for “page load time” is elusive. We argue that, in a modern web page, load times should be defined with respect to interactivity: a page is “loaded” when above-the-fold content is visible and the associated JavaScript event handling state is functional. We define a new load time metric, called Ready Index, which explicitly captures our proposed notion of load time. Defining the metric is straightforward, but actually measuring it is not, since web developers do not explicitly annotate the JavaScript state and the DOM elements which support interactivity. To solve this problem, we introduce Vesper, a tool which rewrites a page’s JavaScript and HTML to automatically discover the page’s interactive state. Armed with Vesper, we compare Ready Index to prior load time metrics like Speed Index; we find that, across a variety of network conditions, prior metrics underestimate or overestimate the true load time for a page by 24%–64%. We also introduce a tool that optimizes a page for Ready Index, decreasing the median time to page interactivity by 29%–32%.

[1]  Ramesh K. Sitaraman,et al.  The Akamai network: a platform for high-performance internet applications , 2010, OPSR.

[2]  David Wetherall,et al.  Speeding up Web Page Loads with Shandian , 2016, NSDI.

[3]  Matt Welsh,et al.  Flywheel: Google's Data Compression Proxy for the Mobile Web , 2015, NSDI.

[4]  T. Daley When speed matters , 2003 .

[5]  Dawson R. Engler,et al.  KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs , 2008, OSDI.

[6]  Larry L. Peterson,et al.  Reliability and Security in the CoDeeN Content Distribution Network , 2004, USENIX Annual Technical Conference, General Track.

[7]  David Wetherall,et al.  Demystifying Page Load Performance with WProf , 2013, NSDI.

[8]  Seungjoon Lee,et al.  PARCEL: Proxy Assisted BRowsing in Cellular networks for Energy and Latency reduction , 2014, CoNEXT.

[9]  Hari Balakrishnan,et al.  Stochastic Forecasts Achieve High Throughput and Low Delay over Cellular Networks , 2013, NSDI.

[10]  Mark Allman,et al.  Comments on bufferbloat , 2013, CCRV.

[11]  Manu Sridharan,et al.  Race detection for web applications , 2012, PLDI.

[12]  Hari Balakrishnan,et al.  Polaris: Faster Page Loads Using Fine-grained Dependency Tracking , 2016, NSDI.

[13]  Feng Qian,et al.  A close examination of performance and power characteristics of 4G LTE networks , 2012, MobiSys '12.

[14]  Jon Howell,et al.  Mugshot: Deterministic Capture and Replay for JavaScript Applications , 2010, NSDI.

[15]  Aruna Balasubramanian,et al.  Improving User Perceived Page Load Times Using Gaze , 2017, NSDI.

[16]  Michael J. Freedman,et al.  Experiences with CoralCDN: A Five-Year Operational View , 2010, NSDI.

[17]  Konstantina Papagiannaki,et al.  EYEORG: A Platform For Crowdsourcing Web Quality Of Experience Measurements , 2016, CoNEXT.

[18]  Benjamin Livshits,et al.  JSMeter: Comparing the Behavior of JavaScript Benchmarks with Real Web Applications , 2010, WebApps.

[19]  Hari Balakrishnan,et al.  Mahimahi: Accurate Record-and-Replay for HTTP , 2015, USENIX Annual Technical Conference.