Vesper: Measuring Time-to-Interactivity for Web Pages

Ravi Netravali, Vikram Nathan, James Mickens, Hari Balakrishnan
15th USENIX Symposium on Networked Systems Design and Implementation (NSDI), Renton, WA, April 2018

Everyone agrees that web pages should load more quickly. However, a good definition for "page load time" is elusive. We argue that, for pages that care about user interaction, 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 that 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; across a variety of network conditions, prior metrics underestimate or overestimate the true load time for a page by 24%--64%. We introduce a tool that optimizes a page for Ready Index, decreasing the median time to page interactivity by 29%--32%.

[PDF (1041KB)]

Bibtex Entry:

@inproceedings{netravali2018vesper,
   author =       "Ravi Netravali and Vikram Nathan and James Mickens and Hari Balakrishnan",
   title =        "{Vesper: Measuring Time-to-Interactivity for Web Pages}",
   booktitle =    {15th USENIX Symposium on Networked Systems Design and Implementation (NSDI)},
   year =         {2018},
   month =        {April},
   address =      {Renton, WA}
}