Accelerate Web page loads by minimizing round trips between clients and servers.
Polaris uses Scout to generate directed, acyclic graphs (dependency graphs) which capture the relationships between all of a page's objects. Exposing these graphs to browsers allows for aggresive fetching of objects to minimize round trips.
Experiments show decreases in page load times by 34% at the median, and 59% at the 95th percentile.
Scout enables developers to automatically track all interactions between objects on a web page. After rewriting a page to support logging, Scout generates a list of reads and writes to a pages state (with detailed information about which script and line number is triggering the read/write). It then processes this list to produce a list of dependencies between the objects on a page.
Today's browsers are constrained by uncertainty regarding how objects on a page interact. As a result, they are forced to use conservative assumptions when loading pages, to ensure correctness. For example, because browsers today don't know whether two objects on a page share state (and thus have a dependency between one another), they are forced to load these objects serially, in the order that the corresponding HTML tags are in. While this ensure correctness, it often fails to fully utilize network and CPU resources during page loads, and thus prevents browsers from loading pages as quickly as possible.
The Polaris research paper, which provides more details about the design and evaluation of Scout and Polaris, was presented at the 2016 USENIX Symposium on Networked Systems Design and Implementation (NSDI '16).
For any questions or suggestions, please e-mail