1 2<!DOCTYPE html> 3<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]--> 4<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]--> 5<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]--> 6<head> 7 <meta charset="utf-8"> 8 9 <title>Books</title> 10 <meta name="author" content="Andy Davies"> 11 12 13 <meta name="description" content="Books A Pocket Guide to Web Performance As Five Simple Steps has closed, I'm making the first edition available for free You can also find many of the other Five Simple Steps authors and their books …"> 14 15 16 <!-- http://t.co/dKP3o1e --> 17 <meta name="HandheldFriendly" content="True"> 18 <meta name="MobileOptimized" content="320"> 19 <meta name="viewport" content="width=device-width, initial-scale=1"> 20 21 22 <link rel="canonical" href="https://andydavies.me/books/"> 23 <link href="http://feeds.feedburner.com/andydavies" rel="alternate" title="Andy Davies" type="application/atom+xml"> 24 25 <meta name="page.card" content="" /> 26 27 28 <link href="/favicon.png" rel="icon"> 29 <link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css"> 30
30<script src="/javascripts/modernizr-2.0.js"></script>
30 31
31<script src="/javascripts/libs/jquery.min.js"></script>
31 32
32<script src="/javascripts/octopress.js" type="text/javascript"></script>
32 33
33<script src="/javascripts/boomerang-1.0.0.min.js" async></script>
33 34 35
35<script> 36 LUX=(function(){var a=("undefined"!==typeof(LUX)&&"undefined"!==typeof(LUX.gaMarks)?LUX.gaMarks:[]);var d=("undefined"!==typeof(LUX)&&"undefined"!==typeof(LUX.gaMeasures)?LUX.gaMeasures:[]);var j="LUX_start";var k=window.performance;var l=("undefined"!==typeof(LUX)&&LUX.ns?LUX.ns:(Date.now?Date.now():+(new Date())));if(k&&k.timing&&k.timing.navigationStart){l=k.timing.navigationStart}function f(){if(k&&k.now){return k.now()}var o=Date.now?Date.now():+(new Date());return o-l}function b(n){if(k){if(k.mark){return k.mark(n)}else{if(k.webkitMark){return k.webkitMark(n)}}}a.push({name:n,entryType:"mark",startTime:f(),duration:0});return}function m(p,t,n){if("undefined"===typeof(t)&&h(j)){t=j}if(k){if(k.measure){if(t){if(n){return k.measure(p,t,n)}else{return k.measure(p,t)}}else{return k.measure(p)}}else{if(k.webkitMeasure){return k.webkitMeasure(p,t,n)}}}var r=0,o=f();if(t){var s=h(t);if(s){r=s.startTime}else{if(k&&k.timing&&k.timing[t]){r=k.timing[t]-k.timing.navigationStart}else{return}}}if(n){var q=h(n);if(q){o=q.startTime}else{if(k&&k.timing&&k.timing[n]){o=k.timing[n]-k.timing.navigationStart}else{return}}}d.push({name:p,entryType:"measure",startTime:r,duration:(o-r)});return}function h(n){return c(n,g())}function c(p,o){for(i=o.length-1;i>=0;i--){var n=o[i];if(p===n.name){return n}}return undefined}function g(){if(k){if(k.getEntriesByType){return k.getEntriesByType("mark")}else{if(k.webkitGetEntriesByType){return k.webkitGetEntriesByType("mark")}}}return a}return{mark:b,measure:m,gaMarks:a,gaMeasures:d}})();LUX.ns=(Date.now?Date.now():+(new Date()));LUX.ac=[];LUX.cmd=function(a){LUX.ac.push(a)};LUX.init=function(){LUX.cmd(["init"])};LUX.send=function(){LUX.cmd(["send"])};LUX.addData=function(a,b){LUX.cmd(["addData",a,b])};LUX_ae=[];window.addEventListener("error",function(a){LUX_ae.push(a)});LUX_al=[];if("function"===typeof(PerformanceObserver)&&"function"===typeof(PerformanceLongTaskTiming)){var LongTaskObserver=new PerformanceObserver(function(c){var b=c.getEntries();for(var a=0;a<b.length;a++){var d=b[a];LUX_al.push(d)}});try{LongTaskObserver.observe({type:["longtask"]})}catch(e){}}; 37 </script>
37 38
38<script src="https://cdn.speedcurve.com/js/lux.js?id=80008" async crossorigin="anonymous"></script>
38 39
39<script> 40 var refererOrigin = 'Unknown'; 41 42 if(document.referrer.length > 0 && typeof window.URL === 'function') { 43 refererOrigin = new URL(document.referrer).origin 44 } 45 46 LUX.addData('refererOrigin', refererOrigin) 47 </script>
47 48 49 50 51 52 53
53<script>
vendor: 353 bytes, lines 53-59
53 54 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 55 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 56 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 57 })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 58 59 ga('create', '
59UA-1591501-2
vendor: 14 bytes, lines 59-60
59', 'auto'); 60
60</script>
60 61 62 63</head> 64 65<body > 66 <header role="banner"><hgroup> 67 <h1><a href="/">Andy Davies</a></h1> 68 69 <h2>Web Performance Consultant</h2> 70 71</hgroup> 72 73</header> 74 <nav role="navigation"><ul class="subscription" data-subscription="rss"> 75 <li><a href="http://feeds.feedburner.com/andydavies" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li> 76 77</ul> 78 79<form action="https://google.com/search" method="get"> 80 <fieldset role="search"> 81 <input type="hidden" name="q" value="site:andydavies.me" /> 82 <input class="search" type="text" name="q" results="0" placeholder="Search"/> 83 </fieldset> 84</form> 85 86<ul class="main-navigation"> 87 <li><a href="/">Blog</a></li> 88 <li><a href="/blog/archives/">Archives</a></li> 89 <li><a href="/about/">About</a></li> 90 <li><a href="/talks/">Talks</a></li> 91 <li><a href="/books/">Books</a></li> 92</ul> 93 94</nav> 95 <div id="main"> 96 <div id="content"> 97 <div> 98<article role="article"> 99 100 <header> 101 <h1 class="entry-title">Books</h1> 102 <p class="meta"> 103 104 105 106 107 108 109 110 111 112 113 114<time datetime="2014-08-30T00:00:00+01:00" pubdate data-updated="true"></time></p> 115 </header> 116 117 <p><a name="webperformance"></a></p> 118 119<h1>A Pocket Guide to Web Performance</h1> 120 121<p><img class="left" src="/blog/images/pocket-guide-to-web-performance.jpg" title="A Pocket Guide to Web Performance" ></p> 122 123<p><em>As Five Simple Steps has closed, I'm making the first edition available for free</em></p> 124 125<p><em>You can also find many of the other Five Simple Steps authors and their books via <a href="http://www.futuresimplesteps.com/">Future Simple Steps</a></em></p> 126 127<p>Learn why performance matters, and pick up practical techniques to make smoother pages that load faster.</p> 128 129<p><a class="button" href="https://gumroad.com/l/webperformance-free">Get it for free!</a></p> 130 131<p>Web pages are getting larger and slower to load, and we seem to be relying on browser and network improvements to rescue us. Visitors have expectations that pages should be faster but by stretching their patience, there's a danger they will spend less time on our sites, visit fewer pages and buy less.</p> 132 133<p>Aimed at web designers and developers who want to learn why and how to make sites faster, this book will guide you through why performance matters, how to improve it, why the methods work, and some of the trade-offs involved.</p> 134 135<p>You'll learn practical techniques to improve website performance and be introduced to approaches that you can experiment with too.</p> 136 137<p><a name="usingwebpagetest"></a></p> 138 139<h1>Using WebPageTest</h1> 140 141<p><img class="left" src="/blog/images/using-webpagetest.jpg" title="Using WebPagetest" ></p> 142 143<p>Learn basic and advanced uses of WebPageTest, the performance measurement tool for optimizing websites. This practical guide shows users new to this tool how run tests and interpret results, and helps experienced users gain a better and more thorough understanding of hidden features in WebPageTest that make testing easier.</p> 144 145<p><a class="button" href="http://shop.oreilly.com/product/0636920033592.do">Buy from O'Reilly</a></p> 146 147<p>Written in collaboration with Rick Viscomi (<a href="https://twitter.com/rick_viscomi">@rick_viscomi</a>) and Marcel Duran (<a href="https://twitter.com/marcelduran">@marcelduran</a>) Using WebPageTest is available in print and as an ebook too.</p> 148 149 150 <footer> 151 <p class="meta"> 152 153 154 155 156 157 158 159 160 161 162 163 164 165<time datetime="2014-08-30T00:00:00+01:00" pubdate data-updated="true"></time> 166 167 </p> 168 169 </footer> 170 171</article> 172 173</div> 174 175<aside class="sidebar"> 176 177 <section> 178 <h1>About Me</h1> 179 <p>Web Performance Consultant</p> 180 <p><a class="email" href="mailto:[email protected]">[email protected]</a></p> 181 <p><a class="twitter" href="https://twitter.com/andydavies" rel="me">@andydavies</a></p> 182</section> 183<section> 184 <h1>Recent Posts</h1> 185 <ul id="recent_posts"> 186 187 <li class="post"> 188 <a href="/blog/2021/03/25/bypassing-cookie-consent-banners-in-lighthouse-and-webpagetest/">Bypassing Cookie Consent Banners in Lighthouse and WebPageTest</a> 189 </li> 190 191 <li class="post"> 192 <a href="/blog/2020/11/16/the-case-against-anti-flicker-snippets/">The Case Against Anti-Flicker Snippets</a> 193 </li> 194 195 <li class="post"> 196 <a href="/blog/2020/10/12/strengthening-the-link-between-site-speed-and-business-outcomes/">Strengthening the Link Between Site Speed and Business Outcomes</a> 197 </li> 198 199 <li class="post"> 200 <a href="/blog/2020/10/02/reducing-the-site-speed-impact-of-third-party-tags/">Reducing the Site-Speed Impact of Third-Party Tags</a> 201 </li> 202 203 <li class="post"> 204 <a href="/blog/2020/09/22/exploring-site-speed-optimisations-with-webpagetest-and-cloudflare-workers/">Exploring Site Speed Optimisations With WebPageTest and Cloudflare Workers</a> 205 </li> 206 207 </ul> 208</section> 209 210 211</aside> 212 213 214 </div> 215 </div> 216 <footer role="contentinfo"><p>
217 Copyright © 2008 - 2022 Andy Davies - 218 <span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span> 219</p> 220 221</footer> 222 223 224 225 226 227 228 229
229<script> 230 { 231 var webgl = { 232 'vendor': '', 233 'renderer': '' 234 }; 235 236 try { 237 238 var c = document.createElement('canvas'); 239 var g = c.getContext('webgl'); 240 var d = g.getExtension('WEBGL_debug_renderer_info'); 241 242 webgl.vendor = g.getParameter(d.UNMASKED_VENDOR_WEBGL); 243 webgl.renderer = g.getParameter(d.UNMASKED_RENDERER_WEBGL); 244 } 245 catch(e) { 246 console.log(e); 247 } 248 249 ga('set', 'dimension1', webgl.vendor); 250 ga('set', 'dimension2', webgl.renderer); 251 ga('send', 'pageview'); 252 253 } 254 </script>
254 255 256 257 258</body> 259</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.