Summary README Introduction Performance is About Compromises The Value of Performance Categorizing Users Prioritizing Performance Improvements Identifying Performance Issues The Navigation Timing API Timing Data Inside JavaScript Storing Timestamps at Important Page Events Make More Graphs Simplify! Tech Debt Refactoring Premature Optimization Overview of a Page's Lifecycle Phases of Page Load Page Lifecycle and Performance Busy Indicators Connection and HTTPS DNS Lookups Server Connections HTTPS Setting up HTTPS CDNs HTTP/2 Redirects Assets and Payload HTTP and the Constraints We Face Caching Correctly CORS Gzip and Compression Minification Markup Minification CSS Minification JavaScript Minification Images on the Web Encoding Responsive Images Spriting SVG Unnecessary Images Web Fonts Preloading Inlining and Bundling Assets Postloading JavaScript The Event Loop Browser Events Defer, Async, Both, Neither Head or Body: Where the hell do I put my code? Memory Management CPU-Bound Code Asm.js and You Recommendations Turn on HTTP/2 Minify Assets Compress Images Optimize Web Fonts Resources Chrome's Net Internals Tool Notable Tickets Omissions Mentioned Tools Glossary Thanks