Polaris: Faster Page Loads Using Fine-grained Dependency Tracking
Author(s)
Balakrishnan, Hari; Goyal, Ameesh; Netravali, Ravi
DownloadAccepted version (803.7Kb)
Open Access Policy
Open Access Policy
Creative Commons Attribution-Noncommercial-Share Alike
Terms of use
Metadata
Show full item recordAbstract
To load a web page, a browser must fetch and evaluate objects like HTML files and JavaScript source
code. Evaluating an object can result in additional objects being fetched and evaluated. Thus, loading a web
page requires a browser to resolve a dependency graph;
this partial ordering constrains the sequence in which a
browser can process individual objects. Unfortunately,
many edges in a page’s dependency graph are unobservable by today’s browsers. To avoid violating these hidden
dependencies, browsers make conservative assumptions
about which objects to process next, leaving the network
and CPU underutilized.
We provide two contributions. First, using a new measurement platform called Scout that tracks fine-grained
data flows across the JavaScript heap and the DOM,
we show that prior, coarse-grained dependency analyzers miss crucial edges: across a test corpus of 200
pages, prior approaches miss 30% of edges at the median, and 118% at the 95th percentile. Second, we quantify the benefits of exposing these new edges to web
browsers. We introduce Polaris, a dynamic client-side
scheduler that is written in JavaScript and runs on unmodified browsers; using a fully automatic compiler,
servers can translate normal pages into ones that load
themselves with Polaris. Polaris uses fine-grained dependency graphs to dynamically determine which objects to
load, and when. Since Polaris’ graphs have no missing
edges, Polaris can aggressively fetch objects in a way that
minimizes network round trips. Experiments in a variety
of network conditions show that Polaris decreases page
load times by 34% at the median, and 59% at the 95th
percentile.
Date issued
2016Department
Massachusetts Institute of Technology. Computer Science and Artificial Intelligence LaboratoryCitation
Balakrishnan, Hari, Goyal, Ameesh and Netravali, Ravi. 2016. "Polaris: Faster Page Loads Using Fine-grained Dependency Tracking."
Version: Author's final manuscript