unmodified 2. load the page while blocking all 3rd party scripts compare metrics between unmodified and blocking-all for the total impact of all 3rd party scripts 3. iterate over each 3rd party scripts detected in step 1 A. load the page while blocking all 3rd party scripts except one compare metrics between blocking-all and blocking-all-but-one for the impact of each 3rd party script
this prevents the subsequent request for avatars at https://pbs.twimg.com • every 2 hours, we analyze the most popular page on several editions • to minimize outliers we use 3 or 5 runs in WebPagetest and compare the median results • 9 editions, 15-30 3rd party scripts, every 2 hours -> one wpt run every 7 seconds
rewards • We can engage partners with specific performance questions • The worst performers are mitigated or replaced. • Optimizing for overal outcome BEFORE • Business team has detailed data about revenue from ad sales and partnerships, but no actionable data about performance impact of deals • “local optimization” leads to deals with slow partners
be heroes when they solve tough problems that they did not create BEFORE • editorial team sometimes publishes extremely heavy content • tech team is implicitly blamed for other people’s choices, which is frustrating
to be “lazy” loaded after onLoad event • all content begun before onLoad would therefore block the lazy loaded images • less important 3rd party content was blocking some images Start Image 3rd Party Script onLoad Lazy Loaded Image
a big impact • vendor would not admit it was even possible for “async” scripts to affect page load • the initializing script was moved to after load event and RUM page load averages sped up by 2 seconds. • sounds obvious, but only in retrospect • your interests != their interests
(e.g. 99.95% of all requests are OK), as you scale up the number of request you will soon experience poor overall performance. 2.5% 4.9% 1.3% 25 requests 50 requests 100 requests 0.05% 1 request