<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Guy&apos;s Pod</title>
    <description>Thoughts and research on Web Performance &amp; Security</description>
    <link>https://www.guypo.com//</link>
    <atom:link href="https://www.guypo.com//feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sun, 07 Sep 2025 09:25:41 +0000</pubDate>
    <lastBuildDate>Sun, 07 Sep 2025 09:25:41 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>Responsive Web Design Adoption, 2014</title>
        <description>&lt;p&gt;Responsive Web Design is hot. Practically every company I speak to, around the globe, is either going responsive, has gone responsive, or – at the very least – giving it serious consideration. So, with all this buzz, how many websites are actually responsive?&lt;/p&gt;

&lt;p&gt;To answer this question, I ran a test on the top 10,000 websites (per Alexa), and checked if they are responsive. This test was a repeat of a test I ran last year, and relies primarily on the presence of a horizontal scrollbar when loading the page on a small screen. If the scrollbar is there, it indicates the website didn’t adjust its styling to the display, and thus is not responsive. You can find the full test methodology in &lt;a href=&quot;http://www.guypo.com/roughly-1-in-8-websites-is-responsive/&quot;&gt;last year’s post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I had the pleasure of presenting this data at the awesome &lt;a href=&quot;http://www.webdirections.org/wds14/&quot;&gt;Web Directions South 2014&lt;/a&gt; (slides &lt;a href=&quot;http://www.slideshare.net/guypod/responsive-in-the-wild-2014&quot;&gt;here)&lt;/a&gt;, and in this post summarized the highlights. So, let’s get to the results!&lt;/p&gt;

&lt;h2 id=&quot;rwd-more-popular-in-the-long-tail&quot;&gt;RWD More Popular In The Long Tail&lt;/h2&gt;

&lt;p&gt;The chart and graphic below show the percentage of responsive websites amongst the top 100, 1,000 and 10,000 websites. As you can see, the adoption rate is quite substantial, reaching 18.7% adoption rate in the entire data set.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082677/RWD-Adoption-Tiered-2014_me49jh.png&quot;&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/h_726,w_900/v1431082677/RWD-Adoption-Tiered-2014_me49jh.png&quot; alt=&quot;RWD-Adoption-Tiered-2014&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;The adoption rate is noticeably lower in the very top sites. This may be due to costs, as the top sites can more easily pay for multiple separate websites. However, I believe the reason is more the higher agility of the lower tier sites. These sites often have less legacy code or internal politics than the ones at the very top, making the adoption of RWD easier.&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: center&quot;&gt; &lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Top 100&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Top 1,000&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Top 10,000&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;strong&gt;RWD&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;11.8%&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;18.3%&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;18.7%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;strong&gt;Non RWD&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;88.2%&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;81.7%&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;81.3%&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;rwd-adoption-growing-fast&quot;&gt;RWD Adoption Growing Fast&lt;/h2&gt;

&lt;p&gt;The next chart shows the difference between this year’s results and the test I ran last year. As you can see, adoption has grown substantially in the top 1,000 websites and above. Amongst the top 10,000 websites, almost 8% of websites went responsive within the span of a single year – an incredible growth!&lt;/p&gt;

&lt;p&gt;It’s worth noting that this test used the same URLs used in last year’s test, and so this adoption represents actual changes on the same websites. It’ll also be interesting to explore the percentage of RWD sites amongst the 2014 top sites vs. the 2013 top sites, but this test did not capture that case.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082681/RWD-Adoption-2014-vs-2013_xnpxrp.png&quot;&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/h_512,w_900/v1431082681/RWD-Adoption-2014-vs-2013_xnpxrp.png&quot; alt=&quot;RWD-Adoption-2014-vs-2013&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;rwd-sites-use-large-resources&quot;&gt;RWD Sites Use Large Resources&lt;/h2&gt;

&lt;p&gt;Comparing RWD sites to other websites &lt;strong&gt;on desktop&lt;/strong&gt; shows responsive websites use fewer requests, with a median of 74 requests per page compared to 95 on non-responsive ones. However, the median page weight was practically the same, (roughly 1.1MB) for both types of sites.&lt;/p&gt;

&lt;p&gt;This apparent discrepancy is due to the fact responsive websites use larger resources. As the chart below shows, the average size of a JS or CSS file is more than 20% larger on an RWD site. This increase may be due to the higher complexity of the page, as it can support multiple viewport at once.&lt;/p&gt;

&lt;p&gt;Images are roughly 27% larger on a responsive site, and JPEG images are a staggering 50% heavier! Once again, various reasons may lead to this delta, one of which is the more frequent use of high resolution (“Retina”) images on responsive sites. Mobile displays have a high pixel ratio more often than desktop ones, driving more interest in HD images, which are often (wastefully) used for all clients.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082680/RWD-2014-Object-Size_gg5wfc.png&quot;&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/h_430,w_900/v1431082680/RWD-2014-Object-Size_gg5wfc.png&quot; alt=&quot;RWD-2014-Object-Size&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2 id=&quot;rwd-sites-still-over-download&quot;&gt;RWD Sites Still Over Download&lt;/h2&gt;

&lt;p&gt;So far we’ve compared RWD sites to non-RWD sites. Another interesting view is the difference in page composition when loading an RWD sites on a small vs. a big screen. For most responsive sites, a smaller screen will present users with less content or functionality, for instance hiding some images or social sharing buttons, or shrinking down some images.&lt;/p&gt;

&lt;p&gt;That difference, however, is not reflected in page size. The chart below shows the number of requests and bytes used when loading a web page on a small and big screen. In both of those cases, the User-Agent was that of a desktop browser (Chrome), while the third column shows data for loads on a small screen as well as a Mobile User-Agent.&lt;/p&gt;

&lt;p&gt;As you can see, the delta is not big. RWD pages used a mere 7% fewer requests or bytes on a small screen, despite substantial differences in the amount of content displayed. Using a Mobile User Agent led to a bit more savings, combining for ~13% savings in bytes and requests. This may indicate that some responsive websites employ &lt;a href=&quot;http://www.lukew.com/ff/entry.asp?1392&quot;&gt;RESS&lt;/a&gt;, tuning the content served to the client if it’s a mobile device.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082680/RWD-2014-Over-Downloading_p59inu.png&quot;&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/h_502,w_900/v1431082680/RWD-2014-Over-Downloading_p59inu.png&quot; alt=&quot;RWD-2014-Over-Downloading&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;rwd-sites-almost-as-popular-as-mobile-websites&quot;&gt;RWD Sites almost as popular as Mobile Websites&lt;/h2&gt;

&lt;p&gt;Another way to look at adoption is to compare it to the alternate mobile strategy – a dedicated mobile (“mdot”) site. To do so, I looked at the intersection of websites that appeared in both my set and in &lt;a href=&quot;http://mobile.httparchive.org/&quot;&gt;HTTP Archive Mobile&lt;/a&gt;, which – after some filtering of errors – left me with roughly 2,800 websites, all within the Alexa top 5,000. Not quite 10,000, but still a sizeable sample.&lt;/p&gt;

&lt;p&gt;Amongst those sites, we can see that 17.2% of websites used RWD, 20.5% redirected to a mobile website, and the remaining 62.3% did neither. This is a limited perspective, as some of the “Neither” sites use &lt;a href=&quot;http://venturebeat.com/2013/11/19/responsive-design-adaptive/&quot;&gt;Adaptive Delivery&lt;/a&gt; (using the same URL, but returning a different HTML to mobile clients). In addition, many of the mobile specific sites use RWD, responding to client fragmentation within the “mobile” group. Still, it’s interesting to see RWD is already almost as popular as a Mobile only site.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082679/RWD-Adoption-vs-mdot-2014_tumyej.png&quot;&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/h_666,w_900/v1431082679/RWD-Adoption-vs-mdot-2014_tumyej.png&quot; alt=&quot;RWD-Adoption-vs-mdot-2014&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;rwd-sites-are-heavier-than-mobile-sites&quot;&gt;RWD Sites Are Heavier Than Mobile Sites&lt;/h2&gt;

&lt;p&gt;Now that we have a set of mobile sites and a set of responsive one, we can compare some performance characteristics of these two ways to handle the mobile web. As the next chart shows, mobile websites are &lt;em&gt;substantially&lt;/em&gt; smaller than responsive sites. A median mobile site used less than half the bytes and roughly 30% fewer requests than its responsive peer.&lt;/p&gt;

&lt;p&gt;Note that the absolute numbers are different than those we saw in the previous charts, for two reasons. The first is the smaller data set, and the second is the loading of these sites on real mobile devices. In the previous test, we &lt;em&gt;simulated&lt;/em&gt; mobile, but now that we had a smaller test, I actually loaded the pages (both the Mobile and RWD ones) on a real mobile device (Moto G).&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082678/RWD-Download-vs-Mdot-2014_wrle7l.png&quot;&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/h_503,w_900/v1431082678/RWD-Download-vs-Mdot-2014_wrle7l.png&quot; alt=&quot;RWD-Download-vs-Mdot-2014&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;processing-rwd-sites-on-mobile-is-expensive&quot;&gt;Processing RWD Sites on Mobile Is Expensive&lt;/h2&gt;

&lt;p&gt;One oft-discounted part of page load time is processing time, despite the fact it is a significant contributor to page speed. In this test, I used Chrome Dev Tools to capture the amount of processing time used with every page. This includes steps such as parsing JavaScript, rendering layout, painting on the screen, etc.&lt;/p&gt;

&lt;p&gt;Once again, I compared processing time for RWD sites to that of Mobile sites, guessing that the higher complexity of responsive websites would require more compute. And indeed, as the chart below shows, that guess proved true. The two charts show the processing time in absolute CPU seconds and as a percentage of overall page load time. In both cases, a responsive website required the device (Moto-G, a $200 Android device) to spend much more time running the program that is the site, therefore slowing it down.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082677/RWD-vs-mdot-compute-2014_qdvdnj.png&quot;&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/h_474,w_900/v1431082677/RWD-vs-mdot-compute-2014_qdvdnj.png&quot; alt=&quot;RWD-vs-mdot-compute-2014&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;

&lt;p&gt;Responsive Web Design adoption is growing rapidly, and is already nearing the adoption levels of a dedicated mobile site. Unfortunately, this fast adoption of RWD is moving faster than the attention to its performance. Current RWD sites perform better than desktop sites in various aspects, but are substantially heavier and more complex on mobile, compared to the alternative – a dedicated mobile site.&lt;/p&gt;

&lt;p&gt;In my opinion, this does not mean you should stick to dedicated mobile websites as your strategy. In today’s web (and tomorrow’s web), arbitrarily separating “mobile” from not is doomed to fail, and approaches like RWD are required if we’re to properly serve the fast pace and fragmented device landscape. However, mobile websites gave us some freebies when it comes to performance, and when using RWD, and the more complex pages it requires, we lose those discounts. We have to own our performance.&lt;/p&gt;

&lt;p&gt;As an industry, we should keep encouraging the use of RWD, but at the same time we have to double our efforts in building knowledge and tooling for making responsive websites fast. So pick up an &lt;a href=&quot;http://bit.ly/rf-free&quot;&gt;RWD Performance book&lt;/a&gt; (&lt;a href=&quot;http://bit.ly/rf-free&quot;&gt;free copy&lt;/a&gt;!), attend an &lt;a href=&quot;http://smashingconf.com/oxford-2015/workshops/guy-pordjany&quot;&gt;RWD Perf workshop&lt;/a&gt; near you, and start making responsive websites fast!&lt;/p&gt;
</description>
        <pubDate>Tue, 11 Nov 2014 13:06:43 +0000</pubDate>
        <link>https://www.guypo.com//rwd-2014</link>
        <guid isPermaLink="true">https://www.guypo.com//rwd-2014</guid>
        
        
      </item>
    
      <item>
        <title>RWD Ratio in Top 100,000 websites - refined</title>
        <description>&lt;p&gt;A few weeks ago &lt;a href=&quot;http://www.guypo.com/roughly-1-in-8-websites-is-responsive/&quot;&gt;I posted the results&lt;/a&gt; of a research testing the top 10,000 websites for responsive indicators. The test showed roughly 12% of these sites were responsive, a ratio that was fairly consistent across the top 100, 1,000 and 10,000 sites.&lt;/p&gt;

&lt;p&gt;Following &lt;a href=&quot;https://twitter.com/guypod/status/413333925331623936&quot;&gt;twitter feedback&lt;/a&gt;, I reran the test on the top 100,000 (!!!) websites as well, and dug deeper into the websites flagged as responsive – this post shares the results.&lt;/p&gt;

&lt;h2 id=&quot;what-qualifies-as-a-responsive-site&quot;&gt;What qualifies as a Responsive site?&lt;/h2&gt;

&lt;p&gt;The previous test results triggered a fair bit of conversation about what qualifies as a responsive website. Posts by &lt;a href=&quot;http://bradfrostweb.com/blog/post/the-many-faces-of-adaptive-design/&quot;&gt;Brad Frost&lt;/a&gt;, &lt;a href=&quot;http://blog.cloudfour.com/defining-responsiveness/&quot;&gt;Jason Grigsby&lt;/a&gt; and &lt;a href=&quot;http://timkadlec.com/2014/01/beyond-responsive/&quot;&gt;Tim Kadlec&lt;/a&gt; discuss this in depth, so I won’t spend too much time on it. For the purposes of this blog, I consider websites using Fluid Design to be responsive (using the test described in the last post). Since fluidity is a minimum requirement for responsiveness, these results are an upper bound on the number of responsive websites out there.&lt;/p&gt;

&lt;p&gt;In addition, I noticed a disproportionate chunk of error responses was flagged as responsive. Logically these responses are indeed fluid, as they adapt to the display size, but I wouldn’t really count them as valid pages. To mitigate this issue, I filtered out any website that had less than two “200 OK” responses. This filter eliminated some &lt;a href=&quot;http://www.gstatic.com/&quot;&gt;responsive error pages&lt;/a&gt;, but for the most part seemed to clean the results.&lt;/p&gt;

&lt;p&gt;Lastly, note that while I’m saying “Responsive Sites”, I actually mean “Responsive Home Page”. I’m only testing the home page of each domain, and am assuming the rest of the site is equally responsive or not.&lt;/p&gt;

&lt;h2 id=&quot;ratios-hold-11-12-of-sites-are-responsive&quot;&gt;Ratios Hold: 11-12% of sites are Responsive&lt;/h2&gt;

&lt;p&gt;Let’s get to the numbers.&lt;/p&gt;

&lt;p&gt;At a high level, the results I’ve observed in the top 10,000 websites held in the top 100,000 as well. The following table &amp;amp; chart shows the ratio of RWD sites in different website tiers.&lt;br /&gt;
&lt;a href=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082682/rwd-adoption-rates-100k_tsevg3.png&quot;&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082682/rwd-adoption-rates-100k_tsevg3.png&quot; alt=&quot;rwd-adoption-rates-100k&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;# RWD Sites, by Tier&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Responsive&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Non-Responsive&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;RWD Ratio&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;Top 100&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;10&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;85&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;10.5%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;Top 1,000&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;115&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;842&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;12.0%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;Top 10,000&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;1,048&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;8,414&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;11.1%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;Top 100,000&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;10,510&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;82,326&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;11.3%&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;As you can see, the ratio holds quite well across the different tiers, although it’s a bit stronger in the top 1,000 websites. Roughly every 9&lt;sup&gt;th&lt;/sup&gt; site is marked as responsive, both on the hotetst sites and the long tail of the web.&lt;/p&gt;

&lt;h2 id=&quot;hmm-8510--100&quot;&gt;Hmm… 85+10 = 100?!&lt;/h2&gt;

&lt;p&gt;The math geeks amongst you may have noticed a few of the numbers don’t add up. The Responsive &amp;amp; Non-Responsive counts sum up to less than the “Top X” number – for example in the top 100, we only account for 95 sites. In addition, the ratios are a bit different (by roughly 1%) than the results I shared last month.&lt;/p&gt;

&lt;p&gt;Both of those deltas are due to the filtering of broken pages I mentioned above. In the top 100 sites, 5 sites were filtered. In the top 100,000, over 7,000 sites were filtered. If you’ve ever tested a bulk list of URLs, you’d know that’s a pretty common error rate. Since many error pages were marked as responsive, the RWD ratio actually dropped by roughly 1% once the data was cleaned up.&lt;/p&gt;

&lt;h2 id=&quot;what-does-this-mean&quot;&gt;What does this mean?&lt;/h2&gt;

&lt;p&gt;This test implies Responsive Web Design is no more prevalent on the long tail than it is in the top sites. This may surprise some, since RWD is touted as – amongst other things – a lower cost way to tackle mobile, and so the adoption in the long tail could have been bigger.&lt;/p&gt;

&lt;p&gt;In addition, it means there are over 10,000 responsive websites out there. Some people may think that’s slow progress for a 3.5-year-old concept, but I think it’s actually a pretty impressive reach. We don’t know how quickly we got to this point, but at least we can track its adoption going forward.&lt;/p&gt;
</description>
        <pubDate>Thu, 09 Jan 2014 13:56:04 +0000</pubDate>
        <link>https://www.guypo.com//rwd-ratio-in-top-100000-websites-refined</link>
        <guid isPermaLink="true">https://www.guypo.com//rwd-ratio-in-top-100000-websites-refined</guid>
        
        
      </item>
    
      <item>
        <title>Roughly 1 in 8 websites is Responsive</title>
        <description>&lt;p&gt;I’ve been on a bit of a quest to find out how many responsive websites are out there.  In &lt;a href=&quot;http://www.guypo.com/rwd-and-one-web-adoption-rates/&quot;&gt;a recent post&lt;/a&gt;, I describe a decent way to track the adoption rate of the “One Web” concept, but that technique doesn’t work well for tracking responsive design.&lt;/p&gt;

&lt;p&gt;Now, I think I found the trick for automatically identifying a responsive site.&lt;/p&gt;

&lt;h2 id=&quot;the-trick-a-horizontal-scrollbar-on-a-small-screen&quot;&gt;The trick: A Horizontal Scrollbar on a Small Screen&lt;/h2&gt;

&lt;p&gt;That’s it. A simple test, and in fact – as a &lt;a href=&quot;http://www.linkedin.com/in/guiguy&quot;&gt;designer friend&lt;/a&gt; of mine pointed out – a technique used for implementing responsiveness before media queries and the term RWD existed.&lt;/p&gt;

&lt;p&gt;My proposition is that if you take a non-responsive website and load it in a small browser window, a horizontal scrollbar will show up. However, if the website is responsive, it will magically adjust to the display size, and a scrollbar will not be needed.&lt;/p&gt;

&lt;p&gt;I tested this out on a bunch of sites manually, and my theory seemed to hold true. I opened my Chrome window, resized it to be 320pixels wide, and started loading known responsive websites, such as &lt;a href=&quot;http://www.bostonglobe.com/&quot;&gt;Boston Globe&lt;/a&gt;, &lt;a href=&quot;http://www.starbucks.com/&quot;&gt;Starbucks&lt;/a&gt;, and the recently responsive &lt;a href=&quot;http://www.bloomberg.com/&quot;&gt;Bloomberg&lt;/a&gt;. No scroll bar appeared. I tried out various non-responsive websites (plenty of those around), and a scrollbar was always there.&lt;/p&gt;

&lt;p&gt;And so, I went ahead and automated a test.&lt;/p&gt;

&lt;h2 id=&quot;testing-the-test&quot;&gt;Testing The Test&lt;/h2&gt;

&lt;p&gt;I wrote a small piece of JavaScript that compares the &lt;em&gt;window.innerWidth&lt;/em&gt; value to the &lt;em&gt;scrollWidth&lt;/em&gt; of the top elements on the page. If &lt;em&gt;scrollWidth&lt;/em&gt; was bigger– the site was marked as not responsive.&lt;/p&gt;

&lt;p&gt;I then used &lt;a href=&quot;http://www.webpagetest.org/&quot;&gt;WebPageTest&lt;/a&gt;’s &lt;a href=&quot;https://sites.google.com/a/webpagetest.org/docs/using-webpagetest/scripting#TOC-exec&quot;&gt;exec script command&lt;/a&gt; to load up a bunch of sites and run this test on them. I used the websites tested by the &lt;a href=&quot;http://httparchive.org/&quot;&gt;HTTP Archive&lt;/a&gt; as my sample set, as it lists websites in order of popularity across the web.&lt;/p&gt;

&lt;p&gt;As a test run, I loaded the top 200 websites on a 480px wide Chrome window and manually vetted the results (I also tried 320px, which produced similar results – more on that in a future post). The results weren’t perfect, but were quite good.&lt;/p&gt;

&lt;p&gt;Out of 23 identified RWD sites, only &lt;a href=&quot;http://www.myspace.com/&quot;&gt;myspace.com&lt;/a&gt;, which has an unusual horizontal design, was incorrectly marked as responsive (although &lt;a href=&quot;http://www.reddit.com/&quot;&gt;reddit&lt;/a&gt; has a not very usable panel too). Even more impressive was the fact only one of the 176 sites marked as non-responsive was wrong (&lt;a href=&quot;http://tumblr.com/&quot;&gt;tumblr&lt;/a&gt; was the exception).&lt;/p&gt;

&lt;p&gt;You can check out the screenshots yourself (&lt;strong&gt;warning&lt;/strong&gt;: some sites produced very explicit and NSFW shots)– &lt;a href=&quot;https://www.dropbox.com/sh/gqcwx3wwhwriohj/VR8MjhVlvi&quot;&gt;responsive here&lt;/a&gt; and &lt;a href=&quot;https://www.dropbox.com/sh/7h5p2jpqa5q57yv/vk0qRoH4be&quot;&gt;non-responsive here&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;the-full-test--10000-websites&quot;&gt;The Full Test – 10,000 Websites&lt;/h2&gt;

&lt;p&gt;For the full test, I ran the same setup on the top 10,000 websites, loading them again in a 480px wide Chrome window. As is common, a portion of the tests failed (due to temporary errors or invalid URLs in the list), making the total number less than 10,000, but close enough.&lt;/p&gt;

&lt;p&gt;The following table and chart show the number and ratio of responsive websites for the full list, as well as the top 100 and top 1,000 websites.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082683/top-sites-rwd_tiimfe.png&quot;&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082683/top-sites-rwd_tiimfe.jpg&quot; alt=&quot;top-sites-rwd&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;# RWD Sites, by Tier&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Responsive&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Non-Responsive&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;RWD Ratio&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;Top 100&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;11&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;89&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;11%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;Top 1,000&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;126&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;874&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;12.6%&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;Top 10,000&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;1,129&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;8,102&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;12.2%&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;As you can see, the results are fairly consistent, ranging from 11% to 12.6% across the different tiers. Almost 8% of sites failed to load, which is not uncommon when using generic lists.&lt;/p&gt;

&lt;p&gt;While I could manually verify 200 URLs, doing the same for 10,000 was a bit much… In addition to assuming the results would be as accurate as the first 200, I came up with one external way to vet my results.&lt;/p&gt;

&lt;h2 id=&quot;secondary-verification-mobile-redirects&quot;&gt;Secondary Verification: Mobile Redirects&lt;/h2&gt;

&lt;p&gt;In the mentioned &lt;a href=&quot;http://www.guypo.com/rwd-and-one-web-adoption-rates/&quot;&gt;recent post&lt;/a&gt;, I identified all the &lt;a href=&quot;http://mobile.httparchive.org/&quot;&gt;Mobile HTTP Archive&lt;/a&gt; websites that redirected to a mobile site. Since responsive websites usually &lt;em&gt;replace&lt;/em&gt; a mobile site, I would expect to see practically no overlap between the list of RWD sites and the list of sites that redirect to mobile.&lt;/p&gt;

&lt;p&gt;Comparing the two lists, I indeed only found 25 websites that were marked as both redirecting to a mobile site and responsive. This is quite small – only 2% of all marked responsive sites sites. It’s also substantially smaller than the 20% portion of all websites that redirect to mobile. Therefore, I see this as another affirmation of the test results.&lt;/p&gt;

&lt;p&gt;After manually reviewing the 25 sites, I found a few sites that were mistakenly marked, as well as a few sites that indeed were both responsive and redirected iPhones to mobile, like &lt;a href=&quot;http://www.scribd.com/&quot;&gt;Scribd&lt;/a&gt;, or that had an iPhone specific redirect but not a mobile website, like &lt;a href=&quot;http://www.opera.com/&quot;&gt;Opera&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;

&lt;p&gt;I’m pretty excited about this new find – both the technique and the data.&lt;/p&gt;

&lt;p&gt;Regarding the technique, I feel it’ll be a good (even if not perfect) way to track Responsive Design adoption over time. The data I have so far suggest 95% or more of the sites marked as responsive are indeed responsive, making it accurate enough to use. Beyond tracking adoption, now that we’ve found these sites we can analyze them and find recurring patterns, test performance methodologies and much more – I already have quite a few additional tests on the go…&lt;/p&gt;

&lt;p&gt;Regarding the data, I’m actually quite impressed. I was well aware RWD is gaining adoption, but frankly did not expect almost every 8&lt;sup&gt;th&lt;/sup&gt; site to be responsive! I am truly happy it’s getting such broad adoption, and a little freaked out at the performance implications of it, since very few responsive websites &lt;a href=&quot;http://www.guypo.com/responsive-web-design-is-bad-for-performance-there-i-said-it/&quot;&gt;make the effort to be fast&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’d love to get feedback on both data &amp;amp; technique, along with ideas for what to look into next with these new data sets. Please share your thoughts in the comments field or ping me &lt;a href=&quot;http://twitter.com/guypod/&quot;&gt;on Twitter&lt;/a&gt;.&lt;/p&gt;
</description>
        <pubDate>Wed, 18 Dec 2013 13:29:58 +0000</pubDate>
        <link>https://www.guypo.com//roughly-1-in-8-websites-is-responsive</link>
        <guid isPermaLink="true">https://www.guypo.com//roughly-1-in-8-websites-is-responsive</guid>
        
        
      </item>
    
      <item>
        <title>RWD and “One Web” Adoption Rates</title>
        <description>&lt;p&gt;Responsive Web Design has been discussed for &lt;a href=&quot;http://alistapart.com/article/responsive-web-design/&quot;&gt;about 3 years now&lt;/a&gt;, and this year really &lt;em&gt;felt&lt;/em&gt; like the tipping point for it. Pretty much any organization I talked to is doing something about it, with progress ranging from a launched site, through a budgeted plan, to at least having some executive support.&lt;/p&gt;

&lt;p&gt;And so, I wanted to find out how far we’ve come – how many websites have gone responsive?&lt;/p&gt;

&lt;p&gt;Determining whether a website is responsive or not isn’t simple. Responsiveness is a property of a website, and so identifying a responsive website is not as simple as looking for a media query in its CSS. However, truly switching to responsive design implies adopting the “&lt;a href=&quot;http://adactio.com/journal/1716/&quot;&gt;One Web&lt;/a&gt;” concept – meaning having a single website for both mobile and non-mobile devices. And that, luckily, is a much more measureable number.&lt;/p&gt;

&lt;h2 id=&quot;our-data-sources&quot;&gt;Our Data Sources&lt;/h2&gt;

&lt;p&gt;Many of you know of the &lt;a href=&quot;http://httparchive.org/&quot;&gt;HTTP Archive&lt;/a&gt; (HA), which crawls the home pages of the top 250,000 websites on the web every 2 weeks, and inventories the results. This information is great in inspecting trends on the web, even if it’s a limited view of it.&lt;/p&gt;

&lt;p&gt;What you may not know, is that the HTTP Archive has a baby sister –&lt;a href=&quot;http://mobile.httparchive.org/&quot;&gt;HTTP Archive Mobile&lt;/a&gt; (HAM). HAM runs a similar type of test, powered by the same HTTP Archive &amp;amp; WebPageTest software, but the tests are run from real iPhones, using the &lt;a href=&quot;https://code.google.com/p/mobitest-agent/&quot;&gt;Mobitest agent code&lt;/a&gt;. Since it’s harder to scale these devices, HAM only crawls 5,000 home pages every 2 weeks.&lt;/p&gt;

&lt;p&gt;Lastly, all of these results are stored on &lt;a href=&quot;http://www.igvita.com/2013/06/20/http-archive-bigquery-web-performance-answers/&quot;&gt;Google BigQuery&lt;/a&gt;, thanks to Ilya Grigorik. By using some &lt;a href=&quot;https://developers.google.com/apps-script/articles/bigquery_tutorial&quot;&gt;Google docs / BigQuery integration&lt;/a&gt;, we can correlate data between the desktop results and the mobile results, and run those tests over time.&lt;/p&gt;

&lt;h2 id=&quot;test-1-redirects-on-first-request&quot;&gt;Test #1: Redirects on First Request&lt;/h2&gt;

&lt;p&gt;Each URL test in HA/HAM keeps track, amongst others, of which request was the first request on the page. This is almost always the request to the “/” path on the domain, and so the request isn’t interesting, but its response is.&lt;/p&gt;

&lt;p&gt;For every first request, we can see if its response was a redirect.  The following chart shows the percentage of sites that redirected the first request, for both mobile and desktop.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082686/Redirect-Rate_blitss.jpg&quot; style=&quot;width:100%&quot; alt=&quot;Redirect Rate&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The chart clearly shows two things:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Many websites use redirects. Even on desktop that rate is 27%.&lt;/li&gt;
  &lt;li&gt;Practically half of websites redirect first requests on Mobile. A lot.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;While informative, this chart is still missing data. Clearly websites redirect for more reasons than just mobile, so this view still doesn’t tell us how many redirects happen because of mobile. Which brings us to Test #2.&lt;/p&gt;

&lt;h2 id=&quot;test-2-redirects-on-mobile-only&quot;&gt;Test #2: Redirects on Mobile ONLY&lt;/h2&gt;

&lt;p&gt;Using HTTP Archive, we can correlate the HAM &amp;amp; HA results and see which URLs were redirected &lt;strong&gt;only on mobile&lt;/strong&gt;. This means the website did not redirect first requests from Chrome, but did redirect first iPhone requests.&lt;/p&gt;

&lt;p&gt;Here’s a pretty chart showing % of sites that redirect only on Mobile across all 5K HAM websites and only the top 100:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082685/Mobile-Redirect-Rate_c4ca5m.jpg&quot; style=&quot;width:100%&quot; alt=&quot;Mobile Redirect Rate&quot; /&gt;&lt;/p&gt;

&lt;p&gt;As you can see, indeed practically the full 20% gap we saw before is explained by mobile redirects. It appears that 19% of websites redirect to a mobile website while 81% do not. Looking at the top 100 websites, which are often more sophisticated, a grander 34% redirect on mobile only.&lt;/p&gt;

&lt;p&gt;It’s worth noting that very few websites redirect only on desktop – less than 2%. And in fact, 90% of those sites were Google domains, redirecting Chrome to HTTPS (with SPDY) while letting iOS Safari remain on http.&lt;/p&gt;

&lt;p&gt;So now we know that 81% of websites serve the same URL to desktop and mobile. However, that’s a far cry from saying 81% are responsive. Since, as mentioned above, it’s hard to tell which ones are responsive, we need to resort to other techniques.&lt;/p&gt;

&lt;h2 id=&quot;test-3-mobile-only-redirects-over-time&quot;&gt;Test #3: Mobile only redirects, over time&lt;/h2&gt;

&lt;p&gt;Since Responsive design is only 3 years old, one way to determine its adoption is to look at the rate of mobile only redirects across time. This approach assumes very few websites were responsive 2.5 years ago, when HAM started measuring, and so we should expect fewer redirects over time.&lt;/p&gt;

&lt;p&gt;Here’s a chart showing the % of mobile-only redirects between September 1&lt;sup&gt;st&lt;/sup&gt;, 2012 and November 1&lt;sup&gt;st&lt;/sup&gt;, 2013, for the top 5,000 websites, measured by HAM:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082686/Mobile-Redirect-Rate-Over-Time-5K_wlhvib.jpg&quot; style=&quot;width:100%&quot; alt=&quot;Mobile Redirect Rate Over Time 5K&quot; /&gt;&lt;/p&gt;

&lt;p&gt;As you can see the % of mobile redirect has barely changed over this year and a bit. It does go from 20% to 19%, but that seems to be within the regular variability of the data.&lt;/p&gt;

&lt;p&gt;This is pretty disappointing. It hints to me that no substantial number of websites has dropped their mobile-only websites in favor of a one-web site. As mentioned before, it’s not a clear-cut statement about going responsive, but I see it as a decent indicator.&lt;/p&gt;

&lt;p&gt;You may have noticed this data is only for 14 months, while HAM is actually tracking sites for almost 2.5 years. The challenge is that the number of websites HAM is tracking has changed, going from 1,000 sites in June of 2011, to 2,000 sites in November that same year, to the current 5,000 websites in September of 2012.&lt;/p&gt;

&lt;p&gt;Here’s the chart showing the % of mobile redirects across that entire time period, along with a layover of the number of sites tested:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082687/Mobile-Redirect-Rate-Over-Time-All_ia60lh.jpg&quot; style=&quot;width:100%&quot; alt=&quot;Mobile Redirect Rate Over Time All&quot; /&gt;&lt;/p&gt;

&lt;p&gt;As you can see, the percentage of mobile-only redirects slightly decreases with each increase of the number of URLs. This matches what we’ve seen in test #2, where that number was far higher on the top 100 websites than across all 5,000. In addition, the % of redirects remains similar across each period of time with the same number of URLs.&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;

&lt;p&gt;It’s a bit hard to tell whether to be happy or sad about the 20% number. There are definitely some responsive website amongst the remaining 80%, and one can hope it’s a big number…&lt;/p&gt;

&lt;p&gt;However, the lack of change over the last 14 months tells me that the so-called &lt;a href=&quot;http://readwrite.com/2011/10/13/the_responsive_web_design_revolution_coming_to_a_f&quot;&gt;“Responsive Revolution”&lt;/a&gt; is not upon us yet. Not even close. In fact, it doesn’t look like there has been any real progress in mobile readiness over the last 14 months, with the % of mobile redirects neither increasing nor decreasing.&lt;/p&gt;

&lt;p&gt;I pointed out multiple times during the post that this isn’t a perfect view on the adoption of responsive design. Some websites choose to make their dedicated mobile website responsive, while others may switch from having no mobile website to responsive. In addition, it’s possible that the number of websites going from mdot to responsive is roughly the same as those moving from no mobile website to having a mobile site.&lt;/p&gt;

&lt;p&gt;Still, I find this metric to be an interesting one, and it does represent the adoption of the “One Web” concept. I plan to track it over time, and see how it evolves.&lt;/p&gt;
</description>
        <pubDate>Wed, 04 Dec 2013 21:48:50 +0000</pubDate>
        <link>https://www.guypo.com//rwd-and-one-web-adoption-rates</link>
        <guid isPermaLink="true">https://www.guypo.com//rwd-and-one-web-adoption-rates</guid>
        
        
      </item>
    
      <item>
        <title>Top 5 Tips for Making Fast RWD Sites</title>
        <description>&lt;p&gt;I was recently asked to provide a list of 5 tips for making Responsive websites fast. I’m usually not a fan of such “top 5” lists, feeling they over-simplify concepts that are quite complex (I definitely spend a good chunk of my time &lt;a href=&quot;http://www.slideshare.net/guypod/performance-implications-of-mobile-design-perf-audience-edition&quot;&gt;talking&lt;/a&gt; &lt;a href=&quot;http://www.guypo.com/responsive-images-meetup-a-subjective-summary/&quot;&gt;about&lt;/a&gt; &lt;a href=&quot;http://www.guypo.com/real-world-rwd-performance-take-2/&quot;&gt;this&lt;/a&gt; &lt;a href=&quot;http://www.guypo.com/responsive-web-design-is-bad-for-performance-there-i-said-it/&quot;&gt;topic&lt;/a&gt;). However, as I wrote the tips it actually felt like 5 was the perfect number for the tips I had in mind, and that they did manage to paint a complete picture.&lt;/p&gt;

&lt;p&gt;And so, I figured it’s worthwhile sharing these tips on this blog as well. The tips are roughly in order of priority, based on my assessment of their criticality, except for the last one, which is really a wildcard.&lt;/p&gt;

&lt;p&gt;Without further ado, here are the top 5 tips for making your RWD (Responsive Web Design) site &lt;em&gt;FAST&lt;/em&gt;:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Avoid downloading hidden images by using a JavaScript-based or CSS-based image loading technique&lt;/strong&gt;. Responsive websites primarily use style rules to hide images that don’t fit on the screen, by setting their style to “display:none”. However, hiding an image in this fashion does not prevent the browser from downloading it, resulting in a wasteful download of an image that won’t be shown. Since most responsive websites show significantly fewer images on smaller screens, this issue is the primary reason for the excessive page weight of responsive websites on mobile.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Download images appropriately sized to the relevant screen, a technique known as “&lt;a href=&quot;http://responsiveimages.org/&quot;&gt;Responsive Images&lt;/a&gt;“&lt;/strong&gt;. Responsive websites usually display the same image file across all display sizes (assuming the image is not hidden). The display size of the image, however, is defined using a percentage, and thus smoothly adapts to the size of the screen. This technique, known as “&lt;a href=&quot;http://alistapart.com/article/fluid-images/&quot;&gt;Fluid Images&lt;/a&gt;“, is great visually, but once again creates waste in the amount of downloaded data.  &lt;br /&gt;&lt;br /&gt;
A better solution is to create several versions of each image, resized &lt;strong&gt;&lt;a href=&quot;http://timkadlec.com/2013/06/why-we-need-responsive-images/&quot;&gt;on the server&lt;/a&gt;&lt;/strong&gt; to the appropriate size, and download the one closest to the current display’s capabilities. Doing so will again require using a smarter image loader, like the one discussed in tip #1. Resizing the image on the server means the payload sent to the small screen is lighter, and thus the page is faster. Note that an alternate approach is to only store the “best” image on the server, but use services like &lt;a href=&quot;http://tech.akamai.com/image_converter/&quot;&gt;Akamai’s Image Converter&lt;/a&gt; to resize it (on the Edge) in real-time.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://bradfrost.github.io/this-is-responsive/resources.html#conditional-loading&quot;&gt;Conditionally load JavaScript&lt;/a&gt;, and especially 3rd party JavaScript&lt;/strong&gt;. Responsive websites often include JavaScript components that are not actually used on a small screen. Examples include Twitter streams, location maps, live agent widgets and many more. Like the image examples above, hiding the output of those images using styles does not prevent the browser from downloading and executing the scripts. While smaller in payload, scripts have a &lt;a href=&quot;http://www.stevesouders.com/blog/2012/01/13/javascript-performance/&quot;&gt;much bigger byte-for-byte impact&lt;/a&gt; on page load time, and 3rd party scripts can each be a &lt;a href=&quot;http://www.slideshare.net/patrickmeenan/frontend-spof&quot;&gt;single point of failure&lt;/a&gt; on a page.  &lt;br /&gt;&lt;br /&gt;
Therefore, it’s best to wrap those scripts with a small, inline script that checks the device properties and only adds the scripts to the page if they will actually be needed, thus avoiding the unnecessary slow down and reliability risks. It’s important to do so with care, to avoid slowing down the large screen version of the site. For instance, where possible prefer dynamically adding elements to the Document Object Model (DOM) over using the “document.write()” function. Note that Conditional Loading &lt;em&gt;can&lt;/em&gt; be applied to CSS as well, though doing so in a performant manner is harder to do.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Use &lt;a href=&quot;http://www.lukew.com/ff/entry.asp?1392&quot;&gt;RESS&lt;/a&gt; – &lt;a href=&quot;http://bradfrost.github.io/this-is-responsive/resources.html#ress&quot;&gt;REsponsive + Server Side&lt;/a&gt; – to optimize your site for known clients&lt;/strong&gt;. Responsive design is a great tool for supporting many types of clients without even being aware of its existence, but – as demonstrated in the previous tips – it often leads to bloat and excessive downloads. Some of this bloat can be handled using smart loading, but other types – like excessive HTML – are much harder to deal with on the client.  &lt;br /&gt;&lt;br /&gt;
For such issues, the only real solution is to introduce a server side component that identifies known and popular clients, and tunes the HTML accordingly for those clients alone. Other clients will get the responsive website, which should still work, even if it is not as fast. A good example of this is to trim the biggest “large screen only” portions of your HTML when identifying that a client is a known smartphone, often eliminating in the same stroke references to JavaScript and CSS files that won’t be needed.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Introduce performance testing into your QA or build process&lt;/strong&gt;. At the end of the day, you can’t optimize what you can’t measure. If you want to become fast and stay fast, it’s important to introduce a performance test into your regular testing and quality assurance processes, and to do so as early as possible in the flow. Tools such as &lt;a href=&quot;http://www.webpagetest.org/&quot;&gt;WebPageTest&lt;/a&gt; and many others make it very easy to add a simple performance test of key pages on your application, and run those tests from browsers &lt;a href=&quot;https://sites.google.com/a/webpagetest.org/docs/using-webpagetest/scripting#TOC-setViewportSize&quot;&gt;resized to different viewport sizes&lt;/a&gt; and &lt;a href=&quot;https://github.com/WPO-Foundation/webpagetest/search?q=setdevicescalefactor&amp;amp;type=Code&quot;&gt;simulating different device pixel ratio&lt;/a&gt; (“Retina”) properties.  &lt;br /&gt;&lt;br /&gt;
One simple starting point is to measure the performance of a given page on your site today 20 or 30 times, mark the median page load time as a baseline, and note the standard deviation. Now &lt;a href=&quot;http://cdn.oreillystatic.com/en/assets/1/event/99/DIY%20Synthetic_%20Private%20WebPagetest%20Magic%20Presentation.pdf&quot;&gt;introduce the same performance measurement into your build process&lt;/a&gt;, and if the new median page load time in more than one standard deviation higher than the baseline, mark the build as broken. This will help you prevent your performance from degrading over time, and will now let you focus on making that baseline smaller.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s it. Clearly there’s a lot more to elaborate on for each one of these bullets, but hopefully these tips can help you put a strategy in place for making sure going responsive doesn’t mean going slow.&lt;/p&gt;
</description>
        <pubDate>Tue, 26 Nov 2013 15:30:22 +0000</pubDate>
        <link>https://www.guypo.com//top-5-tips-for-making-fast-rwd-sites</link>
        <guid isPermaLink="true">https://www.guypo.com//top-5-tips-for-making-fast-rwd-sites</guid>
        
        
      </item>
    
      <item>
        <title>Walking on the Edge(s)</title>
        <description>&lt;p&gt;In the next 3 weeks, I’ll have the luxury of attending four awesome web conferences, two of which – somewhat unfortunately – are  named Edge… I would highly recommend attending both conferences, but if you can’t make it, &lt;strong&gt;the Edge conferences are also streamed online for free!&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;edgeconf&quot;&gt;EdgeConf&lt;/h2&gt;

&lt;p&gt;The first one is &lt;a href=&quot;http://edgeconf.com/&quot;&gt;EdgeConf&lt;/a&gt;, taking place on September 23&lt;sup&gt;rd&lt;/sup&gt; (this coming Monday) in NYC. It’s real name is just Edge, but I’ll call it EdgeConf to disambiguate… This will be the second EdgeConf ever, and the first one in the US.&lt;/p&gt;

&lt;p&gt;EdgeConf is an expert’s conference, organized by &lt;a href=&quot;https://twitter.com/triblondon&quot;&gt;Andrew Betts&lt;/a&gt; from FTLabs. It’s made up completely from panels, each focused on one of the hottest topic in today’s web, and discussing the hardest – and often unsolved – problems they surface.&lt;/p&gt;

&lt;p&gt;The audience is just as much a part of the conversation as the panelists, both before and during the session, and we want your help in getting the best questions. If you have a question you want discussed, please add it to our &lt;a href=&quot;http://www.google.com/moderator/#15/e=20e3ec&amp;amp;t=20e3ec.43&amp;amp;f=20e3ec.6c5042&quot;&gt;Google Moderator site&lt;/a&gt;. You can (and should!) also browse around the current questions and vote for the ones you care about the most.&lt;/p&gt;

&lt;p&gt;The entire conference will be streamed live on &lt;a href=&quot;http://edgeconf.com/&quot;&gt;http://edgeconf.com/&lt;/a&gt; when it goes live.&lt;/p&gt;

&lt;h2 id=&quot;akamai-edge&quot;&gt;Akamai Edge&lt;/h2&gt;

&lt;p&gt;The second Edge is &lt;a href=&quot;http://www.akamai.com/edge&quot;&gt;Akamai Edge&lt;/a&gt;, which takes place on October 9-11 in Washington DC. This is the annual Akamai conference, and as such includes a lot of great content related to Akamai products and technology, as well as some great sharing from Akamai customers (often the top sites in the world).&lt;/p&gt;

&lt;p&gt;This year, we’ve also added two subject matter tracks – The Developer Track and Security Symposium. The Developer Track takes place on Wednesday, October 9&lt;sup&gt;th&lt;/sup&gt;, starting at 1:30 Eastern Time, you can see the &lt;a href=&quot;http://www.akamai.com/html/custconf/agenda.html&quot;&gt;full agenda here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We have four awesome presentations in the Developer Track:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;1:30-2:10:&lt;/strong&gt; &lt;a href=&quot;http://www.realgenekim.me/devops-cookbook/&quot;&gt;Gene Kim&lt;/a&gt; will talk about DevOps and how it can help your business&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2:20-3:00:&lt;/strong&gt; &lt;a href=&quot;https://twitter.com/grigs/&quot;&gt;Jason Grigsby&lt;/a&gt; will explain Responsive Web Design and its performance implications&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;3:30-4:10:&lt;/strong&gt; &lt;a href=&quot;http://globalmoxie.com/index.shtml&quot;&gt;Josh Clark&lt;/a&gt; will take us into the future, going beyond Mobile (he’s also taking us on &lt;a href=&quot;https://twitter.com/globalmoxie/statuses/378620715194667008&quot;&gt;two 5k runs&lt;/a&gt; during the conference…)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;4:20-5:00:&lt;/strong&gt; &lt;a href=&quot;http://www.geoffreyamoore.com/&quot;&gt;Geoff Moore&lt;/a&gt; would show how to shape our organization to tap into all of these opportunities.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The entire Developer Track is streamed live online from &lt;a href=&quot;http://akamai.com/edge/&quot;&gt;http://akamai.com/edge/&lt;/a&gt;. You can also tune in earlier (11:40 AM) to see Tom Leighton, Akamai’s Co-Founder and CEO, give a series of demos of recent Akamai tech – that session is always a crowd favorite.&lt;/p&gt;

&lt;p&gt;The Security Symposium is made up of various panels with some great security experts, including &lt;a href=&quot;https://www.schneier.com/&quot;&gt;Bruce Schneier&lt;/a&gt;. It will not be streamed live, but it is being recorded and will made available online shortly after.&lt;/p&gt;

&lt;p&gt;If you’re in the DC area, and want to attend in person, you can buy &lt;a href=&quot;http://www.akamai.com/html/custconf/register.html&quot;&gt;a one-day pass for the conference&lt;/a&gt;. Use the code “Veloc2013” to get a 50% (!!!) discount.&lt;/p&gt;

&lt;h2 id=&quot;and-dont-forget-velocity-nyc&quot;&gt;And don’t forget Velocity NYC!&lt;/h2&gt;

&lt;p&gt;Although it’s not called Edge, I’d be remiss not to mention the first ever &lt;a href=&quot;http://velocityconf.com/velocityny2013&quot;&gt;Velocity NYC&lt;/a&gt; conference, taking place the week after Akamai Edge – October 14-16.&lt;/p&gt;

&lt;p&gt;We have an absolutely amazing lineup of speakers and topics, such as &lt;a href=&quot;http://velocityconf.com/velocityny2013/public/schedule/speaker/122259&quot;&gt;Lyza Gardner&lt;/a&gt;, &lt;a href=&quot;http://velocityconf.com/velocityny2013/public/schedule/speaker/3262&quot;&gt;Jason Grigsby&lt;/a&gt;, &lt;a href=&quot;http://velocityconf.com/velocityny2013/public/schedule/speaker/88031&quot;&gt;Ilya Grigorik&lt;/a&gt;, &lt;a href=&quot;http://velocityconf.com/velocityny2013/public/schedule/speaker/79734&quot;&gt;Tim Kadlec&lt;/a&gt;, &lt;a href=&quot;http://velocityconf.com/velocityny2013/public/schedule/speaker/130924&quot;&gt;Brian LeRoux&lt;/a&gt; and many, many more. We even got &lt;a href=&quot;http://velocityconf.com/velocityny2013/public/schedule/speaker/1669&quot;&gt;Steve Souders&lt;/a&gt; to &lt;a href=&quot;http://velocityconf.com/velocityny2013/public/schedule/detail/31306&quot;&gt;give a full talk&lt;/a&gt; this time!&lt;/p&gt;

&lt;p&gt;Beyond the “regular” web performance and mobile talks, we have some great talks from nearby realms, like having &lt;a href=&quot;http://velocityconf.com/velocityny2013/public/schedule/speaker/158280&quot;&gt;Will Law&lt;/a&gt; talk about Responsive Video and &lt;a href=&quot;http://velocityconf.com/velocityny2013/public/schedule/speaker/158331&quot;&gt;Dan Kaminsky&lt;/a&gt; talk about &lt;a href=&quot;http://velocityconf.com/velocityny2013/public/schedule/detail/31324&quot;&gt;Security in a performance and operations world&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And if all of that’s not enough, the day after Velocity we will have another great &lt;a href=&quot;http://www.webperfdays.org/events/2013-newyork/index.html&quot;&gt;WebPerfDays&lt;/a&gt; unconference, organized by Sergey Chernyshev. A great place to learn even more, and – more importantly – discuss and digest what’s going on in the web performance world today.&lt;/p&gt;

&lt;p&gt;If you haven’t registered yet, you can use the code COMM20 to get a bit of extra discount.&lt;/p&gt;

&lt;h2 id=&quot;thats-it--for-this-month&quot;&gt;That’s it – for this month…&lt;/h2&gt;

&lt;p&gt;Definitely an exciting month ahead, with two Edges, Velocity  &amp;amp; Web Perf Days.&lt;/p&gt;

&lt;p&gt;I hope to see you in at least one of those. If you can’t be there, I’d encourage you to &lt;a href=&quot;http://akamai.com/edge/&quot;&gt;tune in online&lt;/a&gt; to Akamai Edge, &lt;a href=&quot;http://www.google.com/moderator/#15/e=20e3ec&amp;amp;t=20e3ec.43&amp;amp;f=20e3ec.6c5042&quot;&gt;submit your questions&lt;/a&gt; to EdgeConf, and come join the conversation in &lt;a href=&quot;http://www.webperfdays.org/events/2013-newyork/index.html&quot;&gt;WebPerfDays&lt;/a&gt; after Velocity.&lt;/p&gt;
</description>
        <pubDate>Thu, 19 Sep 2013 16:32:28 +0000</pubDate>
        <link>https://www.guypo.com//walking-on-the-edges</link>
        <guid isPermaLink="true">https://www.guypo.com//walking-on-the-edges</guid>
        
        
      </item>
    
      <item>
        <title>Responsive Images Meetup – A Subjective Summary</title>
        <description>&lt;p&gt;Earlier this week I was at a W3C Responsive Images Community Group (RICG) meetup in Paris. It was a great opportunity to connect with smart folks, some of which I’ve never met before, and I had some great conversations, both as part of the agenda and over drinks.&lt;/p&gt;

&lt;p&gt;For those who weren’t able to enjoy the &lt;a href=&quot;https://twitter.com/guypod/status/377824680532799488&quot;&gt;Parisian views&lt;/a&gt;, this blog post holds my (not at all official) summary of what took place, plus my opinions of it. Flo &lt;a href=&quot;http://shoogledesigns.com/blog/blog/2013/09/13/responsive-images-meetup-coming-together-is-a-beginning/&quot;&gt;also wrote&lt;/a&gt; a blog post with his summary, which I highly recommend. I suspect there will be more detailed and accurate reports coming from the &lt;a href=&quot;http://responsiveimages.org/&quot;&gt;W3C RICG&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;a-bit-of-background&quot;&gt;A bit of background&lt;/h2&gt;

&lt;p&gt;If you haven’t been following the conversation, let’s start with a quick background on where things stand. This is a short (and again, subjective) summary, you can find the full details on the &lt;a href=&quot;http://responsiveimages.org/&quot;&gt;RICG website&lt;/a&gt;,.&lt;/p&gt;

&lt;p&gt;The need for Responsive Images can be broken down into three use-cases:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;http://usecases.responsiveimages.org/#resolution-switching&quot;&gt;&lt;strong&gt;DPR Switching&lt;/strong&gt;&lt;/a&gt;: Serving higher res images &lt;strong&gt;only&lt;/strong&gt; to devices with higher Device Pixel Ratio (aka Retina devices)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://usecases.responsiveimages.org/#resolution-switching&quot;&gt;&lt;strong&gt;Viewport Switching&lt;/strong&gt;&lt;/a&gt;: Serving smaller images to smaller or lower-resolution screens&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://usecases.responsiveimages.org/#art-direction&quot;&gt;&lt;strong&gt;Art Direction&lt;/strong&gt;&lt;/a&gt;: Serving a different (often cropped) version of an image to a smaller screen, highlighting the important parts of a picture instead of just shrinking it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Today, responsive images can only be achieved using JavaScript, CSS or server-side detection, which are harder to implement and have performance implications compared to regular img tags. The current efforts by the RICG aim to enhance HTML (or HTTP) to support responsive images without requiring such workarounds. However, there’s more than way to skin this cat…&lt;/p&gt;

&lt;p&gt;Here are the primary not-mutually-exclusive alternatives on the table:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://picture.responsiveimages.org/&quot;&gt;Picture&lt;/a&gt;&lt;/strong&gt;: an HTML element similar to HTML5’s &amp;lt;video&amp;gt; tag, which uses media-queries to determine which image to load and is uber flexible.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://dev.w3.org/html5/srcset/&quot;&gt;srcset&lt;/a&gt;&lt;/strong&gt;: An &amp;lt;img&amp;gt; tag attribute specifying different URLs to load for a given DPR and possibly resolution.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/igrigorik/http-client-hints&quot;&gt;Client Hints&lt;/a&gt;&lt;/strong&gt;: HTTP header(s) the browser would send, indicating the client’s DPR (and more), allowing the server to serve the correct image.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are a few other proposals (like Yoav Weiss’s “&lt;a href=&quot;http://blog.yoav.ws/2013/09/Responsive-Image-Container&quot;&gt;Magical Image Format&lt;/a&gt;”) which have their own merits, but are not as far along.&lt;/p&gt;

&lt;h2 id=&quot;current-status&quot;&gt;Current Status&lt;/h2&gt;

&lt;p&gt;The first part of the meetup included presentations about real world usage of responsive images today, given by &lt;a href=&quot;https://twitter.com/wilto&quot;&gt;Mat Marquis&lt;/a&gt; (&lt;a href=&quot;http://filamentgroup.com/&quot;&gt;Filament Group&lt;/a&gt;), &lt;a href=&quot;https://twitter.com/integralist&quot;&gt;Mark McDonnell&lt;/a&gt; (&lt;a href=&quot;http://bbcnews.com/&quot;&gt;BBC News&lt;/a&gt;) and myself (&lt;a href=&quot;http://www.akamai.com/html/solutions/aquaion.html&quot;&gt;Akamai&lt;/a&gt;). While interesting, they reviewed the past and present and not the future, so I won’t discuss them further here. The next part of the meetup was dedicated to current status of each of the standardization proposals.&lt;/p&gt;

&lt;p&gt;Right now, no browser supports any of these proposals, but there has been some progress in their implementation. There are JavaScript polyfills for &lt;a href=&quot;https://github.com/scottjehl/picturefill&quot;&gt;picture&lt;/a&gt; and &lt;a href=&quot;https://github.com/borismus/srcset-polyfill&quot;&gt;srcset&lt;/a&gt;, and code patches for Chrome &amp;amp; Firefox were written or are underway. Client Hints is a bit behind, but also has a &lt;a href=&quot;https://chrome.google.com/webstore/detail/client-hints/gdghpgmkfaedgngmnahnaaegpacanlef&quot;&gt;Chrome Extension&lt;/a&gt; to simulate it and a Chrome “&lt;a href=&quot;https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/c38s7y6dH-Q/bNFczRZj5MsJ&quot;&gt;intent to implement&lt;/a&gt;”.&lt;/p&gt;

&lt;p&gt;However, srcset has been getting more love than that. Both WebKit &amp;amp; Firefox implementations of srcset for DPR only (no viewport) are “almost ready”. The Apple rep there couldn’t confirm (or deny), but I got a strong sense that this feature will show up in Safari soon enough.&lt;/p&gt;

&lt;p&gt;We also briefly discussed the &lt;a href=&quot;https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/ResourcePriorities/Overview.html&quot;&gt;Resource Priorities&lt;/a&gt; proposal, discussed in the W3C &lt;a href=&quot;http://www.w3.org/2010/webperf/&quot;&gt;Web Perf working group&lt;/a&gt;, which suggests new “postpone” and “lazyload” attributes on various elements. Resource Priorities includes a way to avoid downloading hidden images, making it very complementary to srcset (which offers no such method). Note that Resource Priorities is only in draft mode, and has no implementations I’m aware of.&lt;/p&gt;

&lt;h2 id=&quot;the-jaded-implementer&quot;&gt;The Jaded “Implementer”&lt;/h2&gt;

&lt;p&gt;Amongst those who showed up for the meetup were members of the Chrome, Firefox, IE and iOS/WebKit teams, and I found it especially interesting to hear their perspective. &lt;a href=&quot;https://twitter.com/hober&quot;&gt;Ted O’Connor&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://twitter.com/davidbaron&quot;&gt;David Baron&lt;/a&gt;, from Apple and Firefox respectively, were particularly blunt in voicing a somewhat jaded perspective on anything that was proposed… Which was sometimes depressing but still good to have. Below are three concrete cases where such feedback was given.&lt;/p&gt;

&lt;p&gt;The picture element was practically sneered at by the implementers. It was seen as a “kitchen sink” proposal, which tries to address every possible use-case for this specific need. This may sound appealing, but some needs are actually broader than responsive images, and should be addressed in a platform wide approach (like &lt;a href=&quot;https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/ResourcePriorities/Overview.html&quot;&gt;Resource Priorities&lt;/a&gt;). Other use-cases may be doable in other ways, and others still are simply not important enough to modify HTML for.&lt;/p&gt;

&lt;p&gt;When discussing the use of media queries for determining which resource to load, whether as part of the picture element or not, there was… some unease from the browser folks. Media queries are more complex to evaluate, and thus would require more CPU; they can’t always be evaluated by the preprocessor (think about viewport width in an iframe); and they may be enhanced in the future in ways that would be even harder to process. Unlike picture, though, I didn’t feel like using media queries was entirely dismissed. If there’s enough push and value, I think browsers may agree to take this path.&lt;/p&gt;

&lt;p&gt;Lastly, on Client-hints, there was push back against adding headers. One explicit statement was that “while we (browser implementers) aren’t saying we’ll &lt;strong&gt;&lt;em&gt;never&lt;/em&gt;&lt;/strong&gt; add new headers, we’re only one step away from that”. They pointed out that while some header-based content negotiation techniques worked in the past (e.g. Accept-Encoding), many failed (e.g. Accept-Language, Accept-Charset), leaving a sense that this is a wrong approach. Personally, I don’t think past failures are a reason not to try again, and feel like an &lt;a href=&quot;https://github.com/igrigorik/http-client-hints/issues/8&quot;&gt;opt-in mechanism&lt;/a&gt; for Client Hints would mitigate much of the concern.&lt;/p&gt;

&lt;h2 id=&quot;srcset--the-most-likely-path&quot;&gt;Srcset – the most likely path&lt;/h2&gt;

&lt;p&gt;As open as the discussion was, at the end of the day these decisions are at the mercy of the browser implementers. And the implementers like srcset, and have actually been implementing it (as implementers often do). And so, it seems pretty clear that srcset will happen.&lt;/p&gt;

&lt;p&gt;DPR support in srcset is likely to start showing up very soon. However, the extended &lt;a href=&quot;http://www.w3.org/html/wg/drafts/srcset/w3c-srcset/&quot;&gt;srcset spec&lt;/a&gt;, which includes viewport sizes, is not a foregone conclusion. The main problem lies with the hard-to-parse micro-syntax used in srcset, used to describe permutations of viewport dimensions and DPRs. For example, consider this img tag:&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;img&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;”a.jpg”&lt;/span&gt;
     &lt;span class=&quot;na&quot;&gt;srcset=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;b.jpg 400w 2x, b.jpg 800w 1x, c.jpg 600h 2x&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This small example demonstrates multiple problems:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;The format isn’t easily readable. You need to know, for instance, that the specified dimensions indicate the “max” dimensions (e.g. a screen 400px wide or less, with a DPR of 2x or less), and not a “min” dimension.&lt;/li&gt;
  &lt;li&gt;There is no way to modify the definition to be a “min” dimension, which conflicts with how “&lt;a href=&quot;http://www.lukew.com/resources/mobile_first.asp&quot;&gt;mobile first&lt;/a&gt;” media queries are written.&lt;/li&gt;
  &lt;li&gt;The format requires repetition of URLs. In this case, b.jpg was created for screens that are 800px wide. This includes both a 400w/2x screen and an 800w/1x screen. Long URLs and multiple permutations can really make the attribute long.&lt;/li&gt;
  &lt;li&gt;The mix of height and width create ambiguity. For instance, if a 2x device was 400×600, should it load b.jpg or c.jpg? The algorithm dictates what to do, but it’s not at all intuitive.&lt;/li&gt;
  &lt;li&gt;The resolution is always specified in pixels (implied), not supporting large font sizes or zoomed in views.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This conversation was, in my opinion, the most productive one in the meetup, and came up with a few conclusions that most people agreed with:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;For #1, we’ll just deal with it through education. It’s not brain surgery.&lt;/li&gt;
  &lt;li&gt;For #2, again, we’ll just deal with it. You can still describe the same conditions, albeit by using funky numbers like 3.99.&lt;/li&gt;
  &lt;li&gt;For #3, we discussed supporting OR conditions, but eventually dropped it. We don’t want to over complicate the format, and gzip compresses repetitions very well anyway. We also discussed using media queries, but – as mentioned above – that didn’t go over well.&lt;/li&gt;
  &lt;li&gt;For #4, everybody agreed we should drop “h”, but keep “w”. This makes the ambiguity go away, and nobody could figure out a strong need for “h” anyway.&lt;/li&gt;
  &lt;li&gt;For #5, we &lt;em&gt;could&lt;/em&gt; support other resolution units, but there wasn’t much discussion about it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One important clarification is that srcset is a &lt;em&gt;recommendation&lt;/em&gt;, not a rule. This means a browser can choose to download a 1x image despite being on a 2x display. It may do so to preserve battery life, reduce bandwidth, accelerate the page, and may do so automatically or based on user preferences. This is different than media queries, which the browser must obey.&lt;/p&gt;

&lt;p&gt;This flexibility means all images in a srcset should hold the same image, differing in quality only, since you can’t be certain which one the browser would load. This, in turn, means srcset cannot be used for Art Direction – which gets me to the next topic…&lt;/p&gt;

&lt;h2 id=&quot;not-heading-in-the-art-direction&quot;&gt;Not heading in the Art Direction&lt;/h2&gt;

&lt;p&gt;Some of the conversation was around priorities. Pretty much everybody agreed that the top priority was addressing high DPR (Retina) displays, and most agreed that handling smaller viewports was a close second. However, there was a strong lack of conviction about the Art Direction use-case.&lt;/p&gt;

&lt;p&gt;The most common use-case for Art Direction is cropping – only showing a portion of an image on a smaller screen. Cropping can be achieved by serving a different image, but it can also be achieved with CSS overlays, showing only a portion of the downloaded image. This approach means you’ve downloaded wasted bytes, but if the image is already adjusted to the client’s resolution, it’s unclear just how much you’d save with server-side cropping.&lt;/p&gt;

&lt;p&gt;For the use-case of showing different images in different viewports, you would need to stick to JavaScript or CSS. The sense in the room was that this is not a strong enough use-case to justify modifying HTML for it.&lt;/p&gt;

&lt;p&gt;At some point I suggested adding an optional marker (in a separate attribute or in the micro-syntax) that forces the browser to respect srcset – let’s call it the &lt;em&gt;strict&lt;/em&gt; marker for now. The &lt;em&gt;strict&lt;/em&gt; marker would allow us to serve different images to different devices, including art direction needs. The image we serve would need to cover all the viewports in this device (e.g. landscape &amp;amp; portrait), but that’s still smaller than the full image in many cases. We debated this a bit, but didn’t reach any final conclusion.&lt;/p&gt;

&lt;h2 id=&quot;personal-perspective&quot;&gt;Personal Perspective&lt;/h2&gt;

&lt;p&gt;While the conversation was very interesting, we didn’t really change the direction much… Browsers will stay on course implementing DPR for srcset (likely to show up soon), and my expectation is that they’ll add support for viewport width shortly after.&lt;/p&gt;

&lt;p&gt;Personally, I arrived at the meetup favoring picture, but left it favoring srcset… assuming we add viewport and the &lt;em&gt;strict&lt;/em&gt; marker, and that we implement Resource Priorities. With that combination, I believe we tackle the main performance needs: serve low res images to low res devices (srcset); avoid excessive client-side cropping (&lt;em&gt;strict&lt;/em&gt;); and avoid downloading hidden images (Resource Priorities). I think it’ll be nice if we also added support for non-pixel viewport definitions.&lt;/p&gt;

&lt;p&gt;I still think there’s room for Client Hints, especially if you want your images optimized through an automated tool, like Akamai’s FEO or Pagespeed. In addition, Client Hints is useful for more than just responsive images, and we need to judge it based on its complete value, not a specific hint.&lt;/p&gt;

&lt;p&gt;All in all, I found the meetup very educational, and – while they were somewhat antagonistic – I saw a fair bit of merit in the implementer remarks. Hopefully you find this summary useful as well.&lt;/p&gt;
</description>
        <pubDate>Fri, 13 Sep 2013 19:03:57 +0000</pubDate>
        <link>https://www.guypo.com//responsive-images-meetup-a-subjective-summary</link>
        <guid isPermaLink="true">https://www.guypo.com//responsive-images-meetup-a-subjective-summary</guid>
        
        
      </item>
    
      <item>
        <title>What are Responsive Websites made of?</title>
        <description>&lt;p&gt;A few weeks ago I &lt;a href=&quot;http://www.guypo.com/real-world-rwd-performance-take-2/&quot;&gt;tested&lt;/a&gt; (again) nearly 500 responsive websites in different resolutions. My test was focused on size differences between resolutions, but looked at the overall page size as a single unit.&lt;/p&gt;

&lt;p&gt;In this blog post, I’d like to dig into the same data, but this time drill down into the specific types of resources on the page – Image, JavaScript, CSS and HTML files. Such a drill down can give us better insight into which optimizations are being applied today, and help guide us regarding where to focus our performance evangelism.&lt;/p&gt;

&lt;h2 id=&quot;rwd-page-size&quot;&gt;RWD Page Size&lt;/h2&gt;

&lt;p&gt;The average size of an RWD site ranged from 1,187 KB on the largest screen to 1,093 KB on the smallest one. The next chart shows those page sizes split into the four primary content types mentioned above, plus an “other” category to capture the rest.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082692/rwd-page-size-by-ftype-res_opaorp.png&quot;&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082692/rwd-page-size-by-ftype-res_opaorp.png&quot; alt=&quot;rwd-page-size-by-ftype-res&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, the overall size doesn’t change much, which was the point I made in the &lt;a href=&quot;http://www.guypo.com/real-world-rwd-performance-take-2/&quot;&gt;previous post&lt;/a&gt;, so I won’t fret over it too much now. However, the chart captures some new interesting tidbits, which I’ll go over in the next few sections.&lt;/p&gt;

&lt;p&gt;It’s worth noting that while I’m only digging into 2013 data here, most of the observations seem to hold true for the data I collected in 2012.&lt;/p&gt;

&lt;h3 id=&quot;images-make-up-the-vast-majority-of-bytes&quot;&gt;Images make up the vast majority of bytes&lt;/h3&gt;

&lt;p&gt;As expected, and matching the &lt;a href=&quot;http://httparchive.org/interesting.php#bytesperpage&quot;&gt;trend we see across all websites&lt;/a&gt;, images make up the bulk of the bytes. Images account for about 6x the average weight of JavaScript files, and 9x that of CSS.&lt;/p&gt;

&lt;p&gt;Images are also consistently the biggest component on a page, regardless of screen size. This implies optimizations like Responsive Images, which deliver smaller images to smaller screens, are not being applied.&lt;/p&gt;

&lt;h3 id=&quot;only-images-are-optimized-to-screen-size&quot;&gt;Only images are optimized to screen size&lt;/h3&gt;

&lt;p&gt;Across resolutions, the only resource type that truly changes in size across resolutions is image. CSS, HTML, JavaScript and the (tiny amount of) HTML all stay the same across resolutions.&lt;/p&gt;

&lt;p&gt;I see this as an obvious sign of inefficiency. Consider the complexity of the “mobile” view (on most RWD sites) compared to that of their “desktop” view. In many cases, the number of interactions or widgets on the page is much smaller, and yet the same amount of HTML, JS &amp;amp; CSS is delivered (and processed) to all screen sizes.&lt;/p&gt;

&lt;p&gt;Clearly images are not optimized well enough either, as mentioned in the previous section, and given their size images are probably still the first thing to optimize. However, compared to other resource types, images are miles ahead.&lt;/p&gt;

&lt;h3 id=&quot;rwd-sites-are-lighter-than-regular-desktop-websites&quot;&gt;RWD sites are “lighter” than regular desktop websites&lt;/h3&gt;

&lt;p&gt;Even on the largest resolution, the average page weight in this test suite is ~1.2 MB. This is quite small compared to the overall &lt;a href=&quot;http://httparchive.org/interesting.php?a=All&amp;amp;l=Apr%2015%202013&amp;amp;s=All#bytesperpage&quot;&gt;~1.4MB average page size&lt;/a&gt;, and almost on par with the &lt;a href=&quot;http://httparchive.org/interesting.php?a=All&amp;amp;l=Apr%2015%202013&amp;amp;s=Top100#bytesperpage&quot;&gt;average home page size of the top 100&lt;/a&gt; websites.&lt;/p&gt;

&lt;p&gt;Given the performance issues on the smaller screen, I wouldn’t claim RWD developers are more performance aware than average. However, RWD does force you to think about what’s &lt;em&gt;really&lt;/em&gt; needed on your page, which can lead to less clutter on the page – and thus fewer bytes.&lt;/p&gt;

&lt;p&gt;And of course there is the possibility the sites inventoried by &lt;a href=&quot;http://mediaqueri.es/&quot;&gt;http://mediaqueri.es/&lt;/a&gt; are not representative enough to compare to the bigger list of websites HTTP Archive tracks. Until we have more known RWD sites we don’t have much we can do about this concern, except take some of the comparisons with a grain of salt.&lt;/p&gt;

&lt;h3 id=&quot;rwd-sites-use-less-js-and-more-css-than-average&quot;&gt;RWD sites use less JS and more CSS than average&lt;/h3&gt;

&lt;p&gt;Somewhat surprisingly, only ~10.5% of page bytes (on average) came from JS files, compared to ~15% on &lt;a href=&quot;http://httparchive.org/interesting.php?a=All&amp;amp;l=Apr%2015%202013&amp;amp;s=All#bytesperpage&quot;&gt;websites in general&lt;/a&gt;. The gap sounds even bigger in absolute numbers – an average RWD site uses ~120KB of JS instead of the overall average of ~220KB. This may again be attributed to the more minimalist design, or perhaps the need to make these sites work across more old mobile browsers – thus relying less on JavaScript.&lt;/p&gt;

&lt;p&gt;However, RWD sites compensate for that with CSS weight, which accounted for 7.5% of RWD site page bytes, compared to 2.5% or less on websites overall. Despite being smaller overall, the average RWD site packs 85KB compared to the 36KB an average website uses – roughly 2.5x more. This part is not surprising at all, as much of RWD relies on CSS, and browser compatibility often requires duplicating CSS content, but it seems to be an area to improve in.&lt;/p&gt;

&lt;h2 id=&quot;comparing-requests&quot;&gt;Comparing Requests&lt;/h2&gt;

&lt;p&gt;Since performance is made up of more than just byte download, this second chart outlines the average number of requests per resolution, again split by content type.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082693/rwd-page-reqs-by-ftype-res_fcxwvr.png&quot;&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082693/rwd-page-reqs-by-ftype-res_fcxwvr.png&quot; alt=&quot;rwd-page-reqs-by-ftype-res&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This chart mostly reinforces the insights I mentioned above:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Total number of requests doesn’t change much across resolutions&lt;/li&gt;
  &lt;li&gt;Images make up the majority of requests, by a large margin (though not quite as large as the gap in bytes)&lt;/li&gt;
  &lt;li&gt;Average total number of requests – roughly 41 – is quite low compared to the &lt;a href=&quot;http://httparchive.org/trends.php#bytesTotal&amp;amp;reqTotal&quot;&gt;overall average&lt;/a&gt; of 91.&lt;/li&gt;
  &lt;li&gt;Total number of JS requests is almost half the &lt;a href=&quot;http://httparchive.org/trends.php#bytesJS&amp;amp;reqJS&quot;&gt;average number&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unlike what we’ve seen with bytes, even the number of CSS requests is lower than the &lt;a href=&quot;http://httparchive.org/trends.php#bytesCSS&amp;amp;reqCSS&quot;&gt;overall average of 5&lt;/a&gt;, though higher than the &lt;a href=&quot;http://httparchive.org/trends.php?s=Top100&amp;amp;minlabel=Apr+15+2012&amp;amp;maxlabel=Apr+15+2013#bytesCSS&amp;amp;reqCSS&quot;&gt;top 100 average of 2.7&lt;/a&gt;. In other words, RWD sites seem to have bigger CSS files, not more of them.&lt;/p&gt;

&lt;p&gt;Seeing that the average RWD site uses only 41 requests is encouraging, though it could also imply complex websites don’t feel like RWD is a valid option for them. Another explanation could be that current RWD implementers are – on average – better developers &amp;amp; designers. RWD is still a new trend, and talented teams are more likely to be early adopters, making today’s numbers better than what they’ll be in the future.&lt;/p&gt;

&lt;h2 id=&quot;image-optimization--requests-vs-bytes&quot;&gt;Image Optimization – Requests vs. Bytes&lt;/h2&gt;

&lt;p&gt;RWD image optimization focuses on two main areas:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Not downloading hidden images&lt;/li&gt;
  &lt;li&gt;Downloading smaller images on smaller screens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I was curious to see if websites implement one of these more than the other. To check if that’s the case, I plotted the number of image bytes and image requests side by side, across the different window sizes.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082692/rwd-img-reqs-bytes-by-res1_wccd6m.png&quot;&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082692/rwd-img-reqs-bytes-by-res1_wccd6m.png&quot; alt=&quot;rwd-img-reqs-bytes-by-res&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’d notice the two lines are quite cleanly aligned. This indicates (though it’s hardly scientific proof) that both optimization aspects are equally popular – though calling either popular is a stretch, as most websites don’t apply either.&lt;/p&gt;

&lt;p&gt;I would suspect most RWD sites either optimize images or not, but if they do – they optimize both aspects. Helping this theory is the fact most responsive images tools, like &lt;a href=&quot;https://github.com/scottjehl/picturefill&quot;&gt;PictureFill&lt;/a&gt;, also implicitly avoid handling hidden images.&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;

&lt;p&gt;This data gives us some good further insight into the state of RWD websites today. We can now say that:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;The push for using responsive images is reaping some fruit&lt;/strong&gt;. There’s still plenty of work to do before we’re in a good spot, but we’re making progress.&lt;/li&gt;
  &lt;li&gt;**Pretty much all other aspects of RWD websites, are not optimized **to screen size. We should further evangelize serving just the right amount of HTML, JS and CSS to clients, and build supporting tools.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;It’s possible that RWD naturally helps reduce clutter&lt;/strong&gt; and thus make web pages leaner. While not a factual statement, the data we currently have points&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Remember that these conclusions, and for that fact all of these data, refer to the state of RWD today. It doesn’t mean responsive websites &lt;em&gt;always&lt;/em&gt; behave this way, it just indicates what is actually happening in implementations today. I’ll keep tracking them, to help point out how we’re doing, and where we should focus our attention next.&lt;/p&gt;

</description>
        <pubDate>Mon, 29 Apr 2013 18:28:58 +0000</pubDate>
        <link>https://www.guypo.com//what-are-responsive-websites-made-of</link>
        <guid isPermaLink="true">https://www.guypo.com//what-are-responsive-websites-made-of</guid>
        
        
      </item>
    
      <item>
        <title>iOS Browsers Speed Bakeoff</title>
        <description>&lt;p&gt;Apple has always allowed only one browser rendering-engine on the iOS platform – the one included by default. Both the native browser (Mobile Safari) and the browser embedded into apps (UIWebView) use this engine. In addition, any alternate browser on iOS, most notably Chrome for iOS, must use UIWebView and not their own engines.&lt;/p&gt;

&lt;p&gt;However, a browser is not just a rendering engine, and the iOS browsers still differ quite a bit. For example, Mobile Safari benefits from a JavaScript engine that is 3X faster than UIWebView. Chrome for iOS, in turn, uses a custom network layer designed to be as fast as the one used by Chrome for Android.&lt;/p&gt;

&lt;p&gt;Still, because Chrome for iOS and Mobile Safari are both closed applications, we had no way of actually measuring their performance. We were limited to measuring using UIWebView within &lt;a href=&quot;http://mobitest.akamai.com/&quot;&gt;Mobitest&lt;/a&gt;, and had to &lt;em&gt;assume&lt;/em&gt; the other browsers are faster. Fortunately, technology is always improving…&lt;/p&gt;

&lt;p&gt;I’ve been working with &lt;a href=&quot;http://appurify.com/blog/&quot;&gt;Manish Lachwani&lt;/a&gt;, the CTO of a new startup called &lt;a href=&quot;http://appurify.com/&quot;&gt;Appurify&lt;/a&gt;. He and his team have created a platform for automated testing and measurement of black-box apps, on real mobile devices. More specifically, the platform enables some probing into the internals of select apps, such as Mobile Safari and Chrome for iOS, and even lets one simulate network speeds and cellular conditions. Using this technology, we can finally compare the actual performance of these three browsers.&lt;/p&gt;

&lt;h2 id=&quot;tl-dr&quot;&gt;TL; DR;&lt;/h2&gt;

&lt;p&gt;Here’s a quick summary of the bottom line results.&lt;/p&gt;

&lt;p&gt;Overall, Mobile Safari showed to be 18% faster than UIWebView on average. This is a respectable difference, but nowhere near the 3x difference in JavaScript benchmark results. The networking improvements included in Chrome for iOS narrowed this gap, making Chrome only 7% slower than Mobile Safari on average. Despite the small gap, Mobile Safari was consistently faster. It beat UIWebView on 88% of websites and Chrome on 72% of websites – though often by a small margin.&lt;/p&gt;

&lt;p&gt;Network conditions significantly impacted the results. On a fast 4G connection, Mobile Safari’s lead grew to 33% faster than UIWebView and 18% faster than Chrome. A similar difference would probably be seen on a good WiFi connection. On the other hand, on a 2-bar 3G connection Mobile Safari was only 2% faster than UIWebView, and it was 2% &lt;strong&gt;slower&lt;/strong&gt; than Chrome. On the average network tier (3G, 5 bars), Chrome beat Safari on 58% of websites, by an average of 5%.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082693/Speed-Delta-Chart_gy4glg.jpg&quot;&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082693/Speed-Delta-Chart_gy4glg.jpg&quot; alt=&quot;Speed-Delta-Chart&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A few key takeaways from these results are:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;There is a real, quantifiable difference between Mobile Safari and UIWebView-based browsers.&lt;/li&gt;
  &lt;li&gt;However, in real world cellular network conditions, the difference between the browsers on iOS is not huge.&lt;/li&gt;
  &lt;li&gt;The networking layer in Chrome makes a real difference, especially in less than ideal network conditions.&lt;/li&gt;
  &lt;li&gt;The small delta implies using UIWebView-based tools, such as Adobe Shadow, Mobitest, and MIHTool, maintains a decent approximation for the performance Mobile Safari would show, especially under average or poor network conditions.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;short-history-lesson&quot;&gt;Short history lesson&lt;/h2&gt;

&lt;p&gt;About 2 years ago, as part of iOS 4.3, Apple introduced some major improvements to its native browser, Mobile Safari. The most well known improvement was Nitro, an improved JavaScript engine that performs Just-In-Time compilation, making JS dramatically faster.&lt;/p&gt;

&lt;p&gt;Unfortunately, apps did not benefit from these improvements. Apple did not include Nitro (and other optimizations) in its embedded browser, UIWebView. Apple stated this was &lt;a href=&quot;http://arstechnica.com/apple/2011/06/ios-5-brings-nitro-speed-to-home-screen-web-apps/&quot;&gt;due to security concerns&lt;/a&gt;, while others &lt;a href=&quot;http://www.theregister.co.uk/2011/03/15/apple_ios_throttles_web_apps_on_home_screen/&quot;&gt;voiced conspiracy theories&lt;/a&gt; about Apple crippling HTML5 apps.&lt;/p&gt;

&lt;p&gt;Whatever the reason, the embedded and native browsers were not equals, and are still not equal today. When Blaze, my previous company, compared browser performance between iOS and Android, Apple even &lt;a href=&quot;http://news.cnet.com/8301-30685_3-20044325-264.html&quot;&gt;explicitly stated&lt;/a&gt; that the embedded browser does not represent the native browser, due to these missing optimizations.&lt;/p&gt;

&lt;h2 id=&quot;what-the-benchmarks-said&quot;&gt;What the Benchmarks said&lt;/h2&gt;

&lt;p&gt;Based on benchmarks, the impact is dramatic. JavaScript Benchmark such as SunSpider are &lt;a href=&quot;http://www.guypo.com/ios5-top10-performance-changes/&quot;&gt;3x faster on MobileSafari compared to UIWebView&lt;/a&gt;, implying that browsing a page inside your Twitter or Yelp app would be painfully slow.&lt;/p&gt;

&lt;p&gt;Real websites, however, are not benchmarks. We already know that &lt;a href=&quot;http://www.slideshare.net/guypod/the-mobile-difference-in-numbers/11&quot;&gt;hardware improvements impact benchmarks more than page load times&lt;/a&gt;, and can expect the same to be true in this case. In addition, cellular performance isn’t all that great, and if the network is the bottleneck, browser differences may have less of an impact.&lt;/p&gt;

&lt;p&gt;Luckily, we’re now able to test these expectations using Appurify, and compare actual load times of real web pages on the different browsers. Let’s get to the results.&lt;/p&gt;

&lt;h2 id=&quot;comparing-averages&quot;&gt;Comparing Averages&lt;/h2&gt;

&lt;p&gt;On average, Mobile Safari was just a little bit faster. When averaging all network speeds, it was 18% faster than UIWebView and 7% faster than Chrome for iOS.&lt;/p&gt;

&lt;p&gt;When comparing MobileSafari with UIWebView, there was a clear trend – the slower the network, the smaller the gap. Safari’s lead went from 33% to 12% to 2% as network speeds decreased. This makes sense to me – as the network gets slower, the bottleneck becomes mostly moving bits up and down, and optimizations like a faster JavaScript engine don’t help as much.&lt;/p&gt;

&lt;p&gt;The comparison with Chrome for iOS was a bit murkier. Mobile Safari was 18% faster on the 4G network, but it was 5% &lt;strong&gt;slower&lt;/strong&gt; under the 3G 5 bars conditions. The most likely explanation is that Chrome’s &lt;a href=&quot;http://www.igvita.com/posa/high-performance-networking-in-google-chrome/&quot;&gt;touted network layer&lt;/a&gt; shines under such conditions. When looking at the poor network conditions case, the delta shrunk, but Chrome was still 2% faster than Mobile Safari.&lt;/p&gt;

&lt;h4 id=&quot;how-did-mobile-safari-compare-to-other-browsers&quot;&gt;How did Mobile Safari compare to other browsers?&lt;/h4&gt;

&lt;table id=&quot;box-table-a&quot; width=&quot;90%&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Mobile Safari vs…&lt;/th&gt;&lt;th&gt;4G Speed&lt;/th&gt;&lt;th&gt;3G, 5 Bars&lt;/th&gt;&lt;th&gt;3G, 2 Bars&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;UIWebView&lt;/th&gt;&lt;td&gt;33% Faster&lt;/td&gt;&lt;td&gt;12% Faster&lt;/td&gt;&lt;td&gt;2% Faster&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Chrome for iOS&lt;/th&gt;&lt;td&gt;18% Faster&lt;/td&gt;&lt;td&gt;5% Slower&lt;/td&gt;&lt;td&gt;2% Slower&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;safari-consistently-faster&quot;&gt;Safari Consistently Faster&lt;/h2&gt;

&lt;p&gt;Mobile Safari also outdid the other browsers in the vast majority of tested URLs. Compared to UIWebView, mobile safari was faster in roughly 4 out of 5 sites in the top two speeds, and 3 out of five in the poor network test.&lt;/p&gt;

&lt;p&gt;On the top network speed, Mobile Safari also beat Chrome in 80% of cases. However, repeating what we’ve seen in the averages, Chrome did better under worse conditions, and was faster on 58% of websites in both the middle and bottom network speeds, even if the win was usually by a very small margin.&lt;/p&gt;

&lt;h4 id=&quot;on-how-many-websites-was-mobile-safari-faster&quot;&gt;On how many websites was Mobile Safari faster?&lt;/h4&gt;

&lt;table id=&quot;box-table-a&quot; width=&quot;90%&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Mobile Safari vs.&lt;/th&gt;&lt;th&gt;4G Speed&lt;/th&gt;&lt;th&gt;3G, 5 Bars&lt;/th&gt;&lt;th&gt;3G, 2 Bars&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;UIWebView&lt;/th&gt;&lt;td&gt;86%&lt;/td&gt;&lt;td&gt;79%&lt;/td&gt;&lt;td&gt;58%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Chrome for iOS&lt;/th&gt;&lt;td&gt;80%&lt;/td&gt;&lt;td&gt;42%&lt;/td&gt;&lt;td&gt;42%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;how-often-did-it-really-matter&quot;&gt;How often did it really matter?&lt;/h2&gt;

&lt;p&gt;Realistically, a 1-2% difference matters very little. If Safari was consistently 2% faster than Chrome, few would call it a faster browser. So, I took a look at how often was the gap between the browsers &lt;strong&gt;significant&lt;/strong&gt;, defined as a 10% or bigger load time delta.&lt;/p&gt;

&lt;p&gt;Compared to UIWebView, Safari was much faster when the network was good. An impressive 70% of websites loaded significantly faster on Safari, usually by a gap of 20% or more. Safari was often much faster on a good 3G connection too, but on a bad connection the delta was harder to notice.&lt;/p&gt;

&lt;p&gt;When comparing to Chrome, the results repeated the previous pattern. On a good connection, Safari was significantly faster on 60% of websites. That stat dropped to 10% on average conditions, and climbed back to 23% on poor network speeds.&lt;/p&gt;

&lt;h4 id=&quot;on-how-many-websites-was-mobile-safari-significantly-10-faster&quot;&gt;On how many websites was Mobile Safari significantly (10%+) faster?&lt;/h4&gt;

&lt;table id=&quot;box-table-a&quot; width=&quot;90%&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Mobile Safari vs&lt;/th&gt;&lt;th&gt;4G Speed&lt;/th&gt;&lt;th&gt;3G, 5 Bars&lt;/th&gt;&lt;th&gt;3G, 2 Bars&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;UIWebView&lt;/th&gt;&lt;td&gt;70%&lt;/td&gt;&lt;td&gt;39%&lt;/td&gt;&lt;td&gt;17%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Chrome for iOS&lt;/th&gt;&lt;td&gt;60%&lt;/td&gt;&lt;td&gt;10%&lt;/td&gt;&lt;td&gt;23%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;On the flip side, Chrome also beat Safari by a large margin in a decent number of cases – 29% under poor conditions, and 16% under average conditions. Under good conditions, only 10% of websites loaded much faster on Chrome.&lt;/p&gt;

&lt;p&gt;UIWebView beat Safari by a significant difference in less than 10% of tested sites, less affected by network speed.&lt;/p&gt;

&lt;h4 id=&quot;on-how-many-websites-was-mobile-safari-significantly-10-slower&quot;&gt;On how many websites was Mobile Safari significantly (10%+) slower?&lt;/h4&gt;

&lt;table id=&quot;box-table-a&quot; width=&quot;90%&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Mobile Safari vs&lt;/th&gt;&lt;th&gt;4G Speed&lt;/th&gt;&lt;th&gt;3G, 5 Bars&lt;/th&gt;&lt;th&gt;3G, 2 Bars&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;UIWebView&lt;/th&gt;&lt;td&gt;8%&lt;/td&gt;&lt;td&gt;7%&lt;/td&gt;&lt;td&gt;9%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Chrome for iOS&lt;/th&gt;&lt;td&gt;10%&lt;/td&gt;&lt;td&gt;16%&lt;/td&gt;&lt;td&gt;29%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;conclusions&quot;&gt;Conclusions&lt;/h2&gt;

&lt;p&gt;My first conclusion is that the delta between UIWebView and Safari is smaller than I thought. Especially under less ideal network conditions, which is when users feel the most pain, UIWebView and Mobile Safari don’t differ much.&lt;/p&gt;

&lt;p&gt;Being a big advocate for speed, though, my second takeaway is that this difference is still real and interesting. Especially under good conditions, Mobile Safari is truly faster. This means I still wish Apple would put Nitro and the other optimizations into UIWebView, and believe users would appreciate that.&lt;/p&gt;

&lt;p&gt;My third takeaway, and the one I was most surprised to see, is how big of an impact the Chrome networking layer made. Chrome for iOS, despite being built around UIWebView, managed to significantly shrink the gap with Safari – and even beat it often enough. While I can’t say Chrome for iOS is faster than Safari, these numbers make it hard to say it’s slower. This is doubly impressive when you consider this test doesn’t capture some of the &lt;a href=&quot;http://www.igvita.com/posa/high-performance-networking-in-google-chrome/#lifetime&quot;&gt;predictive optimizations&lt;/a&gt; Chrome employs when repeatedly used by real users.&lt;/p&gt;

&lt;p&gt;My last conclusion is that the difference is small enough to feel comfortable using UIWebView based tooling. The world of Mobile painfully needs more tools for debugging and testing websites, and these tools only have UIWebView available to them.&lt;/p&gt;

&lt;p&gt;Given the results of this study, I believe the browser performance in tools like &lt;a href=&quot;http://html.adobe.com/edge/inspect/&quot;&gt;Adobe Shadow&lt;/a&gt;, &lt;a href=&quot;http://mobitest.akamai.com/m/index.cgi&quot;&gt;Mobitest&lt;/a&gt;, &lt;a href=&quot;http://www.iunbug.com/mihtool&quot;&gt;MIHTool&lt;/a&gt; and others is a close enough approximation of Mobile Safari to safely use. This is especially true in poor network conditions, and mostly true in average scenarios, which are the cases where performance matters the most.&lt;/p&gt;

&lt;p&gt;Before signing off, I’d like to give another shout out to &lt;a href=&quot;http://www.appurify.com/&quot;&gt;Appurify&lt;/a&gt;, for providing the technology needed to run these tests. They look like a very promising startup, and their platform makes previously complex test cases very feasible. I’d strongly encourage anyone dealing with Mobile to give them a try.&lt;/p&gt;

&lt;h2 id=&quot;appendix-detailed-testing-methodology&quot;&gt;Appendix: Detailed Testing Methodology&lt;/h2&gt;

&lt;p&gt;As always, I try to be completely open about how I ran my tests. There is no such thing as a perfect test, but by sharing the details you can see any possible bias and use your own judgment on whether you should trust the results or not.&lt;/p&gt;

&lt;p&gt;Using Appurify, I measured the page load times of the top 500 websites in the US (per Alexa) with each of three main iOS browsers (Mobile Safari, UIWebView and Chrome for iOS) under three different simulated cellular network speeds (3G 2-bars, 3G 5-bars, 4G LTE). All tests were run using an iPhone 5 running iOS 6.1.2, and were run in portrait mode from San Francisco.&lt;/p&gt;

&lt;p&gt;The test flow was as follows:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;For each network speed - For each URL - For each browser - Load the browser with an initial test URL (to avoid capturing app load time)&lt;/li&gt;
  &lt;li&gt;Load the URL being tested (start the timer)&lt;/li&gt;
  &lt;li&gt;Poll the browser every ~30ms to see if it completed loading&lt;/li&gt;
  &lt;li&gt;Once the page is loaded, stop the timer and log the time.&lt;/li&gt;
  &lt;li&gt;Navigate to the test URL again, clean all caches, cookies, history, etc&lt;/li&gt;
  &lt;li&gt;Exit the browser&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For each browser, each URL was loaded 7 times, and I used the median load time of those for subsequent calculations. Note that the 30ms interval isn’t always perfect, as timers may invoke a few milliseconds later than planned.&lt;/p&gt;

&lt;p&gt;Once I had the per browser data, it seemed obvious that sometimes the browsers did not load the same page. The most common reason was that the page was broken on one or both of the non-safari browsers. Page Size was a pretty good indicator of whether the same page was loaded on multiple browsers, so I only used the URLs where the page size was similar (within a 10%) across all browsers.&lt;/p&gt;

&lt;p&gt;The odd broken tests and these filters reduced the dataset to 318 URLs. Furthermore, all the averages mentioned above are calculated while ignoring outliers – the top 5% of tests. Without ignoring outliers, a handful of timeouts and extreme cases threw off the numbers. After ignoring the outliers, the median and averages were very close to each other, and could almost be used interchangeably.&lt;/p&gt;

&lt;p&gt;Note that when I compared sites across network conditions, I used the average page load time on each browser (across network speeds), and compared them to each other. This means if a site was much faster under a certain network speed, and a bit slower in other two, it may still be marked as faster overall. This approach isn’t more or less accurate than another, but it’s still worth clarifying.&lt;/p&gt;

&lt;p&gt;The last detail to share is the exact network speeds used in this study. I throttled network speeds down to maintain a consistent speed for benchmarking, and used the network speeds that Appurify classifies as Verizon’s averages in different conditions (for San Francisco). Here are the technical details about those speeds:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;3G, 2 Bars: 193/100 Kbps down/up, 331ms latency&lt;/li&gt;
  &lt;li&gt;3G, 5 Bars: 902/712 Kbps down/up, 150ms latency&lt;/li&gt;
  &lt;li&gt;4G, 5 Bars: 6.8/4.9 Mbps down/up, 29ms latency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re interested in the raw data (they’re slightly complex), you can download it &lt;a href=&quot;http://www.guypo.com/wp-content/uploads/2013/04/Native-vs-emedded-results-ios6.v4.xlsx&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</description>
        <pubDate>Wed, 17 Apr 2013 13:12:05 +0000</pubDate>
        <link>https://www.guypo.com//ios-browsers-speed-bakeoff</link>
        <guid isPermaLink="true">https://www.guypo.com//ios-browsers-speed-bakeoff</guid>
        
        
      </item>
    
      <item>
        <title>Introducing LQIP – Low Quality Image Placeholders</title>
        <description>&lt;p&gt;For web pages today, images are a real challenge.&lt;/p&gt;

&lt;p&gt;On one hand, images account for &lt;a href=&quot;http://httparchive.org/interesting.php#bytesperpage&quot;&gt;over 60% of the page weight&lt;/a&gt;. This means they play a major role in overall page load time, motivating dev teams to try and make images as small (byte-wise) as possible. On the other hand, new devices boast retina displays and higher resolutions, and designers are eager to leverage these screens and provide beautiful rich graphics. This trend, along with others, led to a &lt;a href=&quot;http://httparchive.org/trends.php#bytesImg&amp;amp;reqImg&quot;&gt;30% growth in the average number of image KB on a page&lt;/a&gt; in the last year alone.&lt;/p&gt;

&lt;p&gt;This conflict is partly due to what I think of as “&lt;a href=&quot;http://calendar.perfplanet.com/2012/situational-performance-optimization-the-next-frontier/&quot;&gt;Situational Performance&lt;/a&gt;”. If you’re on a fiber connection – like most designers – the high quality images won’t slow you down much, and will give you a richer experience. If you’re on a cellular connection, you’ll likely prefer a lower quality image to a painfully slow page.&lt;/p&gt;

&lt;p&gt;Fortunately, not all hope is lost.&lt;br /&gt;
 A few months ago we created a new optimization called Low Quality Image Placeholders, or LQIP (pronounced el-kip) for short. This optimization proved useful in bridging the gap between fast and slow connections, and between designers and IT, so I figured it’s worth sharing.&lt;/p&gt;

&lt;h2 id=&quot;core-concept&quot;&gt;Core Concept&lt;/h2&gt;

&lt;p&gt;LQIP’s logic is simple. In a sense, this is like loading progressive JPEGs, except it’s page wide. There are more implementation details below, but it boils down to two main steps:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Initially load the page with low quality images&lt;/li&gt;
  &lt;li&gt;Once the page loaded (e.g. in the onload event), replace them with the full quality images&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;LQIP gives us the best of both worlds. On a slow connection, the user will load a fully usable page much faster, giving them a significantly better user experience. On a fast connection, the extra download of the low quality images – or the delay of the high quality ones – does not lead to a substantial delay. In fact, even on the fast connection the user will get a usable page faster, and they’ll get the full rich visuals a moment later.&lt;/p&gt;

&lt;h2 id=&quot;real-world-example&quot;&gt;Real World Example&lt;/h2&gt;

&lt;p&gt;Here’s an example of the &lt;a href=&quot;http://www.etsy.com/&quot;&gt;Etsy&lt;/a&gt; homepage loaded with and without LQIP. Note that Etsy isn’t actually applying this optimization – I made a static copy of their homepage and applied the optimization to it using Akamai FEO.&lt;/p&gt;

&lt;p&gt;On a DSL connection speed, LQIP boosted the page visual by about 500ms (~20%), while on FIOS it was only 100ms faster (10%). This acceleration came from the fact the overall page weight dropped from ~480KB to ~400KB thanks to the lower quality images. All in all, not bad numbers for a single optimization – especially on a highly optimized web page like Etsy’s home page.&lt;/p&gt;

&lt;h3 id=&quot;dsl-connection-without-lqip-above-vs-with-lqip-below&quot;&gt;DSL Connection, Without LQIP (above) vs. With LQIP (below)&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082695/lqip-etsy-dsl_u0lxnh.png&quot;&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082695/lqip-etsy-dsl_u0lxnh.png&quot; alt=&quot;lqip-etsy-dsl&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;fios-connection-without-lqip-above-vs-with-lqip-below&quot;&gt;FIOS Connection, Without LQIP (above) vs. With LQIP (below)&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082695/lqip-etsy-fios_ndnb0e.png&quot;&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082695/lqip-etsy-fios_ndnb0e.png&quot; alt=&quot;lqip-etsy-fios&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The faster visual isn’t the whole story, though. The LQIP page you see actually uses lower quality images than the other. While the LQIP page weighs 80KB less before onload, it weighs 40KB &lt;strong&gt;more&lt;/strong&gt; by the time the full quality images were downloaded. However, the page is definitely usable with the low quality images, keeping the user from idly waiting for the bigger download. You can see an example of a regular and low quality image in the table below – I didn’t turn quality down too far.&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Image Before LQIP (15.6 KB)&lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Image After LQIP (5.2 KB)&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082696/lqip-sample-before_egzl4w.jpg&quot;&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082696/lqip-sample-before_egzl4w.jpg&quot; alt=&quot;lqip-sample-before&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082696/lqip-sample-after_pjihjb.jpg&quot;&gt;&lt;img src=&quot;http://res.cloudinary.com/guypo-blog/image/upload/v1431082696/lqip-sample-after_pjihjb.jpg&quot; alt=&quot;lqip-sample-after&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;its-just-intelligent-delivery&quot;&gt;It’s just intelligent delivery&lt;/h2&gt;

&lt;p&gt;LQIP also helps on the political front, by bridging the gap between IT/Dev and the designers.&lt;/p&gt;

&lt;p&gt;The designers are happy because their full-quality images are showed to the user, unmodified. Sure, the images are a bit delayed, but the end result will usually show up within a few seconds, and their handiwork would remain unharmed.&lt;/p&gt;

&lt;p&gt;IT is happy because they deliver a fast page to their users, even on slow connections. The low quality images may just be placeholders, but (assuming quality wasn’t too drastically reduced) the page is fully usable long before the full images arrive.&lt;/p&gt;

&lt;h2 id=&quot;implementation-tips&quot;&gt;Implementation Tips&lt;/h2&gt;

&lt;p&gt;LQIP implementation includes three parts:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Prepare the low quality images (server-side)&lt;/li&gt;
  &lt;li&gt;Load the low quality images (client-side)&lt;/li&gt;
  &lt;li&gt;Load the high quality images (client-side)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step #1 varies greatly by your system. You can create the images in your CMS systems, duplicate them in your build system, or adjust quality in real-time using tools like &lt;a href=&quot;http://www.akamai.com/service&quot;&gt;Akamai Edge Image Manipulation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Step #2 is simple – just load the images. You can do so with simple img tags, CSS, or using your favorite scripted image loader. If you use small enough images, you can even inline images (matches Ilya’s &lt;a href=&quot;https://docs.google.com/presentation/d/1qbqqcfjz3YwocRZu2led3CzhjHjcTvvQVSYET0QYyL4/edit?forcehl=1&amp;amp;hl=en#slide=id.g33a803cd_4_64&quot;&gt;recommendations&lt;/a&gt;). In Akamai, we use LQIP in combination with &lt;a href=&quot;http://www.guypo.com/the-impact-of-image-optimization/&quot;&gt;loading images on-demand&lt;/a&gt;, reducing the number of requests as well.&lt;/p&gt;

&lt;p&gt;Step #3 is where a new script probably comes in. A simple flow would be:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Create a JS function that iterates the IMG tags on the page, and for each: 1. Determines the full quality image URL (using a naming convention or an extra attribute on the IMG tag)&lt;/li&gt;
  &lt;li&gt;Modifies the SRC attribute to point to this full URL (will reload the image)&lt;/li&gt;
  &lt;li&gt;Call your JS function in the onload event&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want to get fancy, you can load the high quality image in a hidden IMG tag, and then swap the low quality image with it at the onload event. This will prevent the low quality image from disappearing before the full quality image is fully downloaded, which can hinder the user experience.&lt;/p&gt;

&lt;p&gt;Lastly, if you use CSS to load your images, you can also swap the low quality images for higher quality images by loading/applying a new CSS.&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;

&lt;p&gt;I’m pretty excited about LQIP.&lt;/p&gt;

&lt;p&gt;It helps bridge the gap between two conflicting and growing needs, would work on old and new browsers alike, and is (relatively) easy to implement. It’s a “perceived performance” optimization, which is how we should all be thinking – and I believe it’s an optimization everybody should apply.&lt;/p&gt;
</description>
        <pubDate>Tue, 02 Apr 2013 21:18:52 +0000</pubDate>
        <link>https://www.guypo.com//introducing-lqip-low-quality-image-placeholders</link>
        <guid isPermaLink="true">https://www.guypo.com//introducing-lqip-low-quality-image-placeholders</guid>
        
        
      </item>
    
  </channel>
</rss>
