Table of contents : Cover Copyright Table of Contents Preface Who Should Read This Book What This Book Isn’t Recommended Resources Conventions Used in This Book Using Code Examples O’Reilly Safari How to Contact Us Acknowledgments Javier Garza Stephen Ludin Foreword Chapter 1. The Evolution of HTTP HTTP/0.9 and 1.0 HTTP/1.1 Beyond 1.1 SPDY HTTP/2 Chapter 2. HTTP/2 Quick Start Up and Running Get a Certificate Use an Online Generator Self Signed Let’s Encrypt Get and Run Your First HTTP/2 Server Pick a Browser Chapter 3. How and Why We Hack the Web Performance Challenges Today The Anatomy of a Web Page Request Critical Performance The Problems with HTTP/1 Web Performance Techniques Best Practices for Web Performance Anti-Patterns Summary Chapter 4. Transition to HTTP/2 Browser Support Moving to TLS Undoing HTTP 1.1 “Optimizations” Third Parties Supporting Older Clients Summary Chapter 5. The HTTP/2 Protocol Layers of HTTP/2 The Connection Frames Streams Messages Flow Control Priority Server Push Pushing an Object Choosing What to Push Header Compression (HPACK) On the Wire A Simple GET Summary Chapter 6. HTTP/2 Performance Client Implementations Latency Packet Loss Server Push Time to First Byte (TTFB) Third Parties HTTP/2 Anti-Patterns Domain Sharding Inlining Concatenating Cookie-less Domains Spriting Prefetch Real-World Performance Performance Measurement Methodology Study 1: www.facebook.com Study 2: www.yahoo.com Summary Chapter 7. HTTP/2 Implementations Desktop Web Browsers TLS Only Disabling HTTP/2 Support for HTTP/2 Server Push Connection Coalescing HTTP/2 Debugging Tools Beta Channel Mobile Mobile App Support Servers, Proxies, and Caches Content Delivery Networks (CDNs) Summary Chapter 8. Debugging h2 Web Browser Developer Tools Chrome Developer Tools Firefox Developer Tools Debugging h2 on iOS Using Charles Proxy Debugging h2 on Android WebPagetest OpenSSL OpenSSL Commands nghttp2 Using nghttp curl Using curl h2i Wireshark Summary Chapter 9. What Is Next? TCP or UDP? QUIC TLS 1.3 HTTP/3? Summary Appendix A. HTTP/2 Frames The Frame Header DATA DATA Frame Fields DATA Frame Flags HEADERS HEADERS Frame Fields HEADERS Frame Flags PRIORITY PRIORITY Frame Fields RST_STREAM SETTINGS SETTINGS Parameters PUSH_PROMISE PUSH_PROMISE Frame Fields PUSH_PROMISE Frame Flags PING GOAWAY GOAWAY Frame Fields WINDOW_UPDATE WINDOW_UPDATE Frame Fields CONTINUATION CONTINUATION Frame Fields CONTINUATION Frame Flags Appendix B. Tools Reference Index About the Authors Colophon