1. Trang chủ
  2. » Công Nghệ Thông Tin

Professional Website Performance: Optimizing the Front-End and Back-End potx

484 975 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Cấu trúc

  • Professional Website Performance: Optimizing the Front End and the Back End

  • Copyright

  • About The Author

  • About The Technical Editor

  • Credits

  • Acknowledgments

  • Contents

  • Introduction

    • Why Speed Is Important

    • Tools of the Trade

    • Who This Book Is For

    • What This Book Covers

    • How This Book Is Structured

    • What You Need To Use This Book

    • Conventions

    • Errata

    • P2P.Wrox.Com

  • Part I: Front End

    • Chapter 1: A Refresher on Web Browsers

      • A Brief History of Web Browsers

        • Netscape Loses Its Dominance

        • The Growth of Firefox

        • The Present

      • Inside HTTP

        • The HyperText Transfer Protocol

        • HTTP Versions

        • Support for Virtual Hosting

        • Caching

      • How Browsers Download and Render Content

        • Rendering

        • Persistent Connections and Keep- Alive

        • Parallel Downloading

      • Summary

    • Chapter 2: Utilizing Client-Side Caching

      • Understanding the Types of Caching

        • Caching by Browsers

        • Intermediate Caches

        • Reverse Proxies

      • Controlling Caching

        • Conditional GETs

        • Utilizing Cache-Control and Expires Headers

        • Choosing Expiration Policies

        • Coping with Stale Content

        • How Not to Cache

      • Dealing with Intermediate Caches

        • Cache-Control Revisited

      • Caching HTTP Responses

        • The Shift in Browser Behavior

        • Using Alternative 3xx Codes

      • DNS Caching and Prefetching

        • The DNS Resolution Process

        • DNS Caching by the Browser

        • How DNS Lookups Affect Performance

        • DNS Prefetching

        • Controlling Prefetching

      • Summary

    • Chapter 3: Content Compression

      • Who Uses Compression

      • Understanding How Compression Works

        • Compression Methods

        • Other Compression Methods

        • Transfer Encoding

      • Compression in PHP

        • Compressing PHP-Generated Pages

        • Compressing Other Resources

      • Summary

    • Chapter 4: Keeping the Size Down with Minification

      • JavaScript Minification

        • YUI Compressor

        • Google Closure

        • Comparison of JavaScript Minifiers

      • CSS Minification

        • Use Shorthand

        • Grouping Selectors

        • CSS Minifiers

        • Improving Compression

      • HTML Minification

        • HTML Minification Techniques

        • HTML Minification Tools

      • Summary

    • Chapter 5: Optimizing Web Graphics and CSS

      • Understanding Image Formats

        • JPEG

        • GIF

        • PNG

        • SVG

      • Optimizing Images

        • Image Editing Software

        • Choosing the Right Format

        • Interlacing and Progressive Rendering

        • PNG Optimization

        • GIF Optimization

        • JPEG Compression

        • Image Optimization Software

        • Data URIs

        • Favicons

        • Using Lazy Loading

        • Avoiding Empty src attributes

        • Using Image Maps

      • CSS Sprites

        • Sprite Strategies

        • Repeating Images

      • CSS Performance

        • CSS in the Document Head

        • Inline versus External

        • Link versus @import

        • Redundant Selectors

        • CSS Expressions

        • Selector Performance

        • Using Shorthand Properties

        • Inheritance and Default Values

        • Doing More with CSS

      • Looking Forward

        • MNG

        • APNG

        • JPEG 2000

      • Summary

    • Chapter 6: JavaScript, The Document Object Model, and Ajax

      • JavaScript, JScript, and ECMAScript

        • A Brief History of JavaScript

        • JavaScript Engines

      • The Document Object Model

        • Manipulating the DOM

        • Reflowing and Repainting

        • Browser Queuing

        • Event Delegation

        • Unobtrusive JavaScript

        • Memory Management

      • Getting the Most from JavaScript

        • Language Constructs

        • Loading JavaScript

        • Nonblocking of JavaScript Downloads

        • Merging, Splitting, and Inlining

        • Web Workers

      • Ajax

        • XMLHttpRequest

        • Using Ajax for Nonblocking of JavaScript

        • Server Responsiveness

        • Using Preemptive Loading

        • Ajax Frameworks

      • Summary

  • Part II: Back End

    • Chapter 7: Working with Web Servers

      • Apache

        • Working with Modules

        • Deciding on Concurrency

        • Improving Logging

        • Miscellaneous Performance Considerations

        • Examining Caching Options

        • Using Content Compression

      • Looking Beyond Apache

        • Nginx

        • Nginx, Apache, and PHP

        • The Best of the Rest

      • Multiserver Setups with Nginx and Apache

        • Nginx as a Reverse Proxy to Apache

        • Proxy Options

        • Nginx and Apache Side by Side

      • Load Balancers

        • Hardware versus Software

        • Load Balancer Features

        • Using Multiple Back-End Servers

        • HAProxy

      • Summary

    • Chapter 8: Tuning MySQL

      • Looking Inside MySQL

      • Understanding the Storage Engines

        • MyISAM

        • InnoDB

        • MEMORY

        • ARCHIVE

      • Tuning MySQL

        • Table Cache

        • Thread Caching

        • Per-Session Buffers

      • Tuning MyISAM

        • Key Cache

        • Miscellaneous Tuning Options

      • Tuning InnoDB

        • Monitoring InnoDB

        • Working with Buffers and Caches

        • Working with File Formats and Structures

        • Memory Allocation

        • Threading

        • Disk I/O

        • Mutexes

        • Compression

      • Working with the Query Cache

        • Understanding How the Query Cache Works

        • Configuring the Query Cache

        • Inspecting the Cache

        • The Downsides of Query Caching

      • Optimizing SQL

        • EXPLAIN Explained

        • The Slow Query Log

        • Indexing

        • Query Execution and Optimization

        • Query Cost

        • Tips for SQL Efficiency

      • Summary

    • Chapter 9: MySQL in the Network

      • Using Replication

        • The Basics

        • Advanced Topologies

        • Replication Performance

        • Miscellaneous Features of Replication

      • Partitioning

        • Creating Partitions

        • Deciding How to Partition

        • Partition Pruning

        • Physical Storage of Partitions

        • Partition Management

        • Pros and Cons of Partitioning

      • Sharding

        • Lookup Tables

        • Fixed Sharding

        • Shard Sizes and Distribution

        • Sharding Keys and Accessibility

        • Cross-Shard Joins

        • Application Modifications

      • Complementing MySQL

        • MySQL Proxy

        • MySQL Tools

      • Alternatives to MySQL

        • MySQL Forks and Branches

        • Full-Text Searching

        • Other RDBMSs

      • Summary

    • Chapter 10: Utilizing NoSQL Solutions

      • NoSQL Flavors

        • Key-Value Stores

        • Multidimension Stores

        • Document Stores

      • memcache

        • Installing and Running

        • membase — memcache with Persistent Storage

      • MongoDB

        • Getting to Know MongoDB

        • MongoDB Performance

        • Replication

        • Sharding

      • Other NoSQL Technologies

        • Tokyo Cabinet and Tokyo Tyrant

        • CouchDB

        • Project Voldemort

        • Amazon Dynamo and Google BigTable

        • Riak

        • Cassandra

        • Redis

        • HBase

      • Summary

    • Chapter 11: Working with Secure Sockets Layer (SSL)

      • SSL Caching

        • Connections, Sessions, and Handshakes

        • Abbreviated Handshakes

      • SSL Termination and Endpoints

        • SSL Termination with Nginx

        • SSL Termination with Apache

        • SSL Termination with stunnel

        • SSL Termination with stud

      • Sending Intermediate Certificates

      • Determining Key Sizes

      • Selecting Cipher Suites

      • Investing in Hardware Acceleration

      • The Future of SSL

        • OCSP Stapling

        • False Start

      • Summary

    • Chapter 12: Optimizing PHP

      • Extensions and Compiling

        • Removing Unneeded Extensions

        • Writing Your Own PHP Extensions

        • Compiling

      • Opcode Caching

        • Variations of Opcode Caches

        • Getting to Know APC

        • Memory Management

        • Optimization

        • Time-To-Live (TTL)

        • Locking

        • Sample apc.ini

        • APC Caching Strategies

        • Monitoring the Cache

        • Using APC as a Generic Cache

        • Warming the Cache

        • Using APC with FastCGI

      • Compiling PHP

        • phc

        • Phalanger

        • HipHop

      • Sessions

        • Storing Sessions

        • Storing Sessions in memcache/membase

        • Using Shared Memory or tmpfs

        • Session AutoStart

        • Sessions and Caching

          • Efficient PHP Programming

        • Minor Optimizations

        • Major Optimizations

        • Garbage Collection

        • Autoloading Classes

        • Persistent MySQL Connections

      • Profiling with xhprof

        • Installing

        • A Simple Example

        • Don't Use PHP

      • Summary

  • Part III: Appendixes

    • Appendix A: TCP Performance

      • The Three-Way Handshake

      • TCP Performance

        • Nagle's Algorithm

        • TCP_NOPUSH and TCP_CORK

    • Appendix B: Designing for Mobile Platforms

      • Understanding Mobile Platforms

      • Responsive Content

        • Getting Browser Display Capabilities with JavaScript

        • Server-Side Detection of Capabilities

        • A Combined Approach

        • CSS3 Media Queries

        • Determining Connection Speed

      • JavaScript and CSS Compatibility

      • Caching in Mobile Devices

    • Appendix C: Compression

      • The LZW Family

        • LZ77

        • LZ78

        • LZW

        • LZ Derivatives

      • Huffman Encoding

      • Compression Implementations

  • Index

  • Advertisement

Nội dung

www.it-ebooks.info ffirs.indd iiffirs.indd ii 05/11/12 5:02 PM05/11/12 5:02 PM www.it-ebooks.info PROFESSIONAL WEBSITE PERFORMANCE INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii  PART I FRONT END CHAPTER 1 A Refresher on Web Browsers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 CHAPTER 2 Utilizing Client-Side Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 CHAPTER 3 Content Compression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 CHAPTER 4 Keeping the Size Down with Minifi cation . . . . . . . . . . . . . . . . . . . . . . . . . 53 CHAPTER 5 Optimizing Web Graphics and CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71 CHAPTER 6 JavaScript, the Document Object Model, and Ajax . . . . . . . . . . . . . . . . . 111  PART II BACK END CHAPTER 7 Working with Web Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 CHAPTER 8 Tuning MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 CHAPTER 9 MySQL in the Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 CHAPTER 10 Utilizing NoSQL Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 CHAPTER 11 Working with Secure Sockets Layer (SSL) . . . . . . . . . . . . . . . . . . . . . . . . 359 CHAPTER 12 Optimizing PHP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375  PART III APPENDIXES APPENDIX A TCP Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 APPENDIX B Designing for Mobile Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 APPENDIX C Compression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .417 INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 ffirs.indd iffirs.indd i 05/11/12 5:02 PM05/11/12 5:02 PM www.it-ebooks.info ffirs.indd iiffirs.indd ii 05/11/12 5:02 PM05/11/12 5:02 PM www.it-ebooks.info PROFESSIONAL Website Performance OPTIMIZING THE FRONT END AND THE BACK END Peter Smith John Wiley & Sons, Inc. ffirs.indd iiiffirs.indd iii 05/11/12 5:02 PM05/11/12 5:02 PM www.it-ebooks.info Professional Website Performance: Optimizing the Front End and the Back End Published by John Wiley & Sons, Inc. 10475 Crosspoint Boulevard Indianapolis, IN 46256 www.wiley.com Copyright © 2013 by John Wiley & Sons, Inc., Indianapolis, Indiana Published simultaneously in Canada ISBN: 978-1-118-48752-5 ISBN: 978-1-118-48751-8 (ebk) ISBN: 978-1-118-55172-1 (ebk) ISBN: 978-1-118-55171-4 (ebk) Manufactured in the United States of America 10 9 8 7 6 5 4 3 2 1 No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600. Requests to the Publisher for permission should be addressed to the Permissions Department, John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030, (201) 748-6011, fax (201) 748-6008, or online at http://www.wiley.com/go/permissions. Limit of Liability/Disclaimer of Warranty: The publisher and the author make no representations or warranties with respect to the accuracy or completeness of the contents of this work and speci cally disclaim all warranties, including without limitation warranties of  tness for a particular purpose. No warranty may be created or extended by sales or promotional materials. The advice and strategies contained herein may not be suitable for every situation. This work is sold with the understanding that the publisher is not engaged in rendering legal, accounting, or other professional services. If professional assistance is required, the services of a competent professional person should be sought. Neither the publisher nor the author shall be liable for damages arising herefrom. The fact that an organization or Web site is referred to in this work as a citation and/or a potential source of further information does not mean that the author or the publisher endorses the information the organization or Web site may provide or recommendations it may make. Further, readers should be aware that Internet Web sites listed in this work may have changed or disappeared between when this work was written and when it is read. For general information on our other products and services please contact our Customer Care Department within the United States at (877) 762-2974, outside the United States at (317) 572-3993 or fax (317) 572-4002. Wiley publishes in a variety of print and electronic formats and by print-on-demand. Some material included with standard print versions of this book may not be included in e-books or in print-on-demand. If this book refers to media such as a CD or DVD that is not included in the version you purchased, you may download this material at http://booksupport .wiley.com . For more information about Wiley products, visit www.wiley.com. Library of Congress Control Number: 2012949514 Trademarks: Wiley, the Wiley logo, Wrox, the Wrox logo, Programmer to Programmer, and related trade dress are trade- marks or registered trademarks of John Wiley & Sons, Inc. and/or its af liates, in the United States and other countries, and may not be used without written permission. All other trademarks are the property of their respective owners. John Wiley & Sons, Inc., is not associated with any product or vendor mentioned in this book. ffirs.indd ivffirs.indd iv 05/11/12 5:02 PM05/11/12 5:02 PM www.it-ebooks.info To my wife, Stef, and my parents ffirs.indd vffirs.indd v 05/11/12 5:02 PM05/11/12 5:02 PM www.it-ebooks.info ffirs.indd viffirs.indd vi 05/11/12 5:02 PM05/11/12 5:02 PM www.it-ebooks.info ABOUT THE AUTHOR PETER G. SMITH has been a full-time Linux consultant, web developer, and system administrator, with a particular interest in performance for the past 13 years. Over the years, he has helped a wide range of clients in areas such as front-end performance, load balancing and scalability, and database opti- mization. Past open source projects include modules for Apache and OSCommerce, a cross-platform IRC client, and contributions to The Linux Documentation Project (TLDP). ABOUT THE TECHNICAL EDITOR JOHN PELOQUIN is a software engineer with back-end and front-end experience ranging across web applications of all sizes. Peloquin earned his B.A. in Mathematics from the University of California at Berkeley, and is currently a lead engineer for a healthcare technology startup, where he makes heavy use of MySQL, PHP, and JavaScript. He has edited Professional JavaScript for Web Developers, 3rd Edition by Nicholas Zakas (Indianapolis: Wiley, 2012) and JavaScript 24-Hour Trainer by Jeremy McPeak (Indianapolis: Wiley, 2010). When he is not coding or col- lecting errata, Peloquin is often found engaged in mathematics, philosophy, or juggling. ffirs.indd viiffirs.indd vii 05/11/12 5:02 PM05/11/12 5:02 PM www.it-ebooks.info ffirs.indd viiiffirs.indd viii 05/11/12 5:02 PM05/11/12 5:02 PM www.it-ebooks.info [...]... contention, or back-end scripts that are taking a long time to generate the page Finally, the server returns a response to the client, which is shown by the fi nal section of the bar The size of this section is dependent on the size of the resource being returned and the available bandwidth The number following the bar is the total time for the resource, from start to finish After the web browser fetches the. .. request 2, there is no DNS lookup — the browser already has the response cached For request 5, the resource resides on a subdomain, ssl.gstatic.com, so this does incur a DNS lookup Also notice two vertical lines at approximately the 40-millisecond and 55-millisecond marks The fi rst line indicates the point at which the browser began to render the page The second line indicates the point at which the onLoad... This shows the idle time (That is, the CPU is doing nothing.) ➤ wa — This shows the time that the CPU is waiting on I/O id (idle) is naturally the most preferable state to be in, whereas wa (waiting) is the least wa indicates that the CPU has things to do but can’t because it’s waiting on other hardware Usually, this is the disks, so check for high values in the io and swap columns Whether the CPU will... code depends on the nature of the applications running on the machine Many of the applications discussed in this book spend a lot of time sending and receiving data over the network, and this is usually implemented at the kernel level The previous vmstat example was taken from a web server at a fairly quiet time of the day Let’s look at another example, taken from the same server, while the nightly backup... broadband because the WPT tests are presumably conducted from quite powerful and well-connected hardware The output of Firebug is similar to that of WPT, complete with the two vertical lines representing the start and end of rendering Each resource can be clicked to expand a list of the headers sent and received with the request System Monitoring This book is intended to be platform-neutral Whether... showing the order in which the browser is requesting resources, and the time that it takes each resource to download Most waterfall tools also show things like the time spent for domain name service (DNS) lookups, for establishing a TCP connection to the web server, for parsing and rendering data, and so on There are a lot of waterfall tools out there — some run in your browser; others are websites... handshake, see Appendix A, “TCP Performance”), and possibly waiting for the web server to spawn a new worker process to handle the request In this example, that took approximately 70 milliseconds The next section shows the time to fi rst byte (TTFB) At the beginning of this section, the client has issued the request and is waiting for the server to respond There’ll always be a slight pause here (approximately... memcache, and mongodb In this book, you’ll discover many of the advanced features of these technologies, and the ways in which they can be utilized to provide scalable, high-performance websites You’ll learn current performance best practices, tips for improving your existing sites, and how to design with scalability in mind The browser market is wide and varied The discussions in this book focus on the. .. event fi red — that is, the point at which the page had fi nished loading You’ll learn more about these waterfall views later in this book — you’ll learn how to optimize the downloading order, why some of the requests have a connection overhead and others don’t, and why there are sometimes gaps where nothing seems to be happening Firebug The downside to WPT is that it shows how the page loads on a remote... shows the fi rst half second in more detail FIGURE I-3 The section at the beginning of the fi rst request indicates a DNS lookup — the browser must resolve www.google.com to an IP address This took approximately 50 milliseconds The next section indicates the time taken to establish a connection to the web server This includes setting up the TCP connection (if you’re unfamiliar with the three-way handshake, . 05/11/12 5:02 PM05/11/12 5:02 PM www.it-ebooks.info Professional Website Performance: Optimizing the Front End and the Back End Published by John Wiley & Sons,. or other professional services. If professional assistance is required, the services of a competent professional person should be sought. Neither the

Ngày đăng: 17/03/2014, 12:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN