Free AI web copilot to create summaries, insights and extended knowledge, download it at here
4873
Abstract
f Ads’.</h2><p id="e5e8">A developer at Jyllands-Posten pointed me to a setting in <i>the</i> performance measuring tool, <a href="http://www.webpagetest.org/">WebPageTest</a>.</p><p id="b8c3"><i>(WebPageTest is <b>what you use</b>, when you do performance tests. <b>SpeedCurve is actually based on WebPageTest</b> — and the most important things in SpeedCurve are the automated tests and a much better design/UI, at least some of the parts — I’ll get back to that.)</i></p><p id="ac27">What you have to do, before you do a WebPageTest test, is to ask WebPageTest to <b>remove the letters ‘PTST’ from the user agent string</b> (which every browser uses to identify itself):</p><figure id="f815"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*XitVzBWd_DGzCIjccWOjHw.jpeg"><figcaption></figcaption></figure><p id="e364"><i>(I’ve written <a href="http://ebudvikling.dk/blog/2016/02/15/et-flueben-i-webpagetest-kan-betyde-meget-for-din-performance-maaling/">a blog post in Danish</a> about this nifty little feature.)</i></p><p id="31bb">‘PTST’ is the culprit in all of this. When our ad technology provider AdTech (<a href="http://oneadserver.aol.com/">now a part of AOL</a>) sees a browser with these four magic letters in the user agent, it withholds the ads from rendering. The reason: <b>To avoid wasting ad displays on tests</b>. Which makes sense, when you think about it.</p><p id="a021">Run a test on WebPageTest with this checkbox checked and you get <i>everything</i>. And that’s what we want. I’ve seen tests where the<b> ‘fully loaded’</b> time (the browser is saying “I’m totally done with loading this site now”) <b>multiplied by 5</b>; that’s a 400% increase! In the same test the <b>total number of requests was multiplied by 3</b> (200% increase).</p><p id="1f8d">Oh, and our <b>SpeedIndex</b> value (an expression of how fast the first screen view/viewport loads) <b>increased by 30%</b> in a test.</p><p id="24ab">But while WebPageTest can give us the correct data, <b>it can’t automate it</b>. We could do something via <a href="https://sites.google.com/a/webpagetest.org/docs/advanced-features/webpagetest-restful-apis">the WebPageTest API</a>, but this is something we want to avoid, so as to not have too many products and service to monitor and maintain.</p><p id="8a91">We then went back into SpeedCurve, but there was no feature to allow this. But… in the ‘Enterprise’ edition of SpeedCurve you are allowed to use <a href="https://sites.google.com/a/webpagetest.org/docs/using-webpagetest/scripting">the WebPageTest scripting language</a>. One of the things you can do here is <b>set the user agent, which is exactly what we wanted to do</b>.</p><p id="eefd">Documents were written, meetings were held, decisions were made. And we (across JP/Politikens Hus, that is Ekstra Bladet, Politiken and Jyllands-Posten) <b>signed up for SpeedCurve Enterprise</b>. O, how we thought we had it made.</p><p id="a842">We now saw SpeedCurve rendering the <i>entire frontpage</i>. Just like we wanted. And we <b>started lacking in the comparisons </b>in SpeedCurve, just as we had expected. Especially compared to the Danish Broadcasting Corporation (which has no ads, since they are funded through Public Service).</p><p id="2930">And the good times kept on coming. SpeedCurve announced that they would now support the <b>same browsers as you can choose between in the developer tools in Google’s Chrome browser</b>. A developer at Politiken tested this and yes, it meant we no longer had to script our user agent. This was a huge plus.</p><p id="3606">Just look at what happened once SpeedCurve updated the browsers and <b>started including ads</b>:</p><figure id="3451"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*qDl1ZCRvq4Df8XJ_-4E_1w.png"><figcaption></figcaption></figure><figure id="f16c"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*S0yQfx9Xvxm3BpTAXBSUTA.png"><figcaption></figcaption></figure><figure id="ca74"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*coOQm61VDAbkCz7rD7TFKA.png"><figcaption></figcaption></figure><figure id="8af5"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*bjoBX9-KatudVZE_IKPv_w.png"><figcaption></figcaption></figure><p id="bbdb">As you can see, ads have a…certain influence on our front page.</p><p id="767b">These two screenshots from SpeedCurve shows how big a percentage third party stuff (here; ads) take up of the front page:</p><figure id="db75"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*AoHX6PgiVGzvOWyyWKtOPg.png"><figcaption></figcaption></figure><figure id="2d69"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*rAHw9tS-CTQNzbV_B-zfIg.png"><figcaption></figcaption></figure><p id="4480">Notice those percentage numbers…</p><p id="51e5">When something takes up almost 80 p
Options
ercent of a websites requests and sites shouldn’t it also receive about 80 percent of the attention?</p><h2 id="4c1a">PSTS back in, ads back out</h2><p id="955b">Alas, it wasn’t to last. <b>SpeedCurve changed the browsers and reintroduced ‘PTST’ into the user agent string.</b> Therefore; no ads. We noticed this and went back to scripting the user agent. But that didn’t work either. Though it had earlier.</p><p id="6f31">I got in touch with the SpeedCurve folks. They told me they had fixed a ‘bug’ and that <b>a test browser should <i>always </i>label itself as such</b>, as Mark from SpeedCurve told me in an email:</p><p id="a423" type="7">WPT should always be identifying itself, even if the UA string has been set via scripting.</p><p id="276d">Instead he created <a href="https://github.com/WPO-Foundation/webpagetest/issues/606">an issue</a> with WebPageTest to allow the user to set the user agent (without ‘PTST’) in the scripting language. <b>Nothing has happened since April 25th.</b> Steve Souders (who is the closest you’ll come to a ‘Mr. Performance’) who also works at SpeedCurve has created <a href="https://github.com/SpeedCurve-Metrics/SpeedCurve/issues/62">an issue</a> with SpeedCurve itself to allow us to remove PTST via a checkbox, like in WebPageTest. <b>This issue was created on March 1st</b>.</p><p id="d119">We still had one shot left though: <b>Whitelist a browser with a ‘PTST’ user agent with our ad technology provider</b> to to allow the SpeedCurve test browsers to see the entire page rendered. Unfortunately, this is not possible since it is a “global setting across all client networks”. That means, it would have to be changed across all of the sites that use their technology. According to <a href="http://oneadserver.aol.com/">their own website</a> they have 74 countries with active clients.</p><p id="484c">I then asked if we could allow the browser through if we scripted the user agent to include the word “SpeedCurve”. In effect, <b>their block functionality would allow a browser through if <i>both </i>the words ‘PTST’ and ‘SpeedCurve’ are in the user agent string. But no dice:</b></p><p id="3ef4" type="7">As long as PTST is in the UA we will block it.</p><h2 id="c77f">Alternatives?</h2><p id="bb21">This is, obviously, a precarious situation for us to be in. <b>We can’t measure the performance of our entire site automatically</b>.</p><p id="0fdf">The logic step is to look at alternatives. So far I’ve only tried one: <a href="https://calibreapp.com/">Calibre</a> (which was suggested to me by the same colleague who suggested SpeedCurve). I even wrote to the guy behind Calibre up front to be sure that it would include ads. But the same result: A fast, lean website. Which just isn’t the truth ;-)</p><p id="5988">Until SpeedCurve (or WebPageTest) comes up with a change we <i>might</i> look at the initial no-no: <b>Running automated WebPageTest tests through their API</b>. As Jyllands-Posten’s developer suggested, <b>we might be able to get it up and running pretty fast <a href="http://calendar.perfplanet.com/2014/webpagetest-private-instances-in-five-minutes/">using Amazon</a></b>.</p><p id="9432">So… here we are. Thinking about what to do. Since we can’t automatically measure our entire page render, we can’t <i>really</i> do any performance budgets. We can’t measure any tweaks or changes, either. <b>We could do it via manually tests but that is the last way out.</b></p><p id="77b0"><i>(Also note: Performance budgets are really hard to do, once you’ve got ads in the mix. The load and performance of them vary a lot; week to week, day to day, hour to hour, even banner to banner. Also, the biggest influence on your performance is outside of your control. So ask yourself if a performance budget is the way to go.)</i></p><p id="fa04">If you made it all the way through this article and have either a trick (or a fully fledged automated performance test tool which include ads…) up your sleeve, <b>please leave a comment.</b></p><p id="3b36">Banner ads (and for us; the way they are found, delivered and rendered) are a huge performance culprit but we can’t automate the measurements of that fact. <b>We are stuck with manual tests in WebPageTest — or browser developer tools like those in Google Chrome.</b></p><p id="be1a">(I you found this post by Googling your own frustrations, know this: <b>You are not alone</b>.)</p><h2 id="4029">Update on June 14th, 2016:</h2><p id="d99c">Apparently this <b>isn’t a problem will all ad tech providers</b>:</p>
<figure id="e652">
<div>
<div>
<img class="ratio" src="http://placehold.it/16x9">
<iframe class="" src="" allowfullscreen="" frameborder="0" height="undefined" width="undefined">
</div>
</div>
</figure></iframe></div></div></figure></article></body>