更快速网站(影印版)

更快速网站(影印版)
作 者: 苏德尔
出版社: 东南大学出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 网站开发
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Steve Souders,在Google从事网络性能和开放源码计划方面的工作。他是YSlow(Firebug性能分析扩展)的创造者,并且担任Velocity(0’Reilly的网络性能和业务运营会议)的联合主席。Steve经常在会议上或者高级别公司中发言,包括微软、亚马逊、MySpace、Linkedln、Facebook。

内容简介

《更快速网站(影印版)》内容简介:对于任何成功的网站来说,性能是至关重要的。但伴随着不断增长的丰富内容和Ajax的过度使用,如今的Web应用已经将浏览器推至性能极限。在《更快速网站(影印版)》中,Google的Web性能专家和前任雅虎首席网站性能官Steve Souders提供了宝贵的技术,来帮助你优化网站性能。作者的上一《更快速网站(影印版)》是非常畅销的《High Performance Web Sites》,它透露了80%的网页加载时间是花在客户端,使网络开发世界为之震惊。在《更快速网站(影印版)》中,Souders和8位专家撰稿人提供了最佳实践和实用建议,用于在三个范畴提高网站的性能:JavaScript——获取用于了解Ajax性能的建议,编写有效的JavaScript,创建响应程序,加载脚本时不阻止其他组件等等。Network——学习穿过多个域共享资源,减小图片尺寸而不损失质量,以及使用分块编码(chunked encoding)来更快呈现页面。Browser——探索内嵌框架(iframe)的替代方案、如何简化CSS选择器和其他技术。对于当今的富媒体网站和Web 2.0应用来说,速度是至关重要的。有了这《更快速网站(影印版)》,你将学习到如何减少你的网站的加载时间,让它们响应得更快。

图书目录

Credits

Preface

1. Understanding Ajax Performance

Trade-offs

Principles of Optimization

Ajax

Browser

Wow!

JavaScript

Summary

2. Creating Responsive Web Applications

What Is Fast Enough?

Measuring Latency

When Latency Goes Bad

Threading

Ensuring Responsiveness

Web Workers

Gears

Timers

Effects of Memory Use on Response Time

Virtual Memory

Troubleshooting Memory Issues

Summary

3. Splitting the Initial Payload

Kitchen Sink

Savings from Splitting

Finding the Split

Undefined Symbols and Race Conditions

Case Study: Google Calendar

4. Loading Scripts Without Blocking

Scripts Block

Making Scripts Play Nice

XHR Eval

XHR Injection

Script in Iframe

Script DOM Element

Script Defer

document.write Script Tag

Browser Busy Indicators

Ensuring (or Avoiding) Ordered Execution

Summarizing the Results

And the Winner Is

5. Coupling Asynchronous Scripts

Code Example: menu.js

Race Conditions

Preserving Order Asynchronously

Technique 1: Hardcoded Callback

Technique 2: Window Onload

Technique 3: Timer

Technique 4: Script Onload

Technique 5: Degrading Script Tags

Multiple External Scripts

Managed XHR

DOM Element and Doc Write

General Solution

Single Script

Multiple Scripts

Asynchronicity in the Real World

Google Analytics and Dojo

YUI Loader Utility

6. Positioning Inline Scripts

Inline Scripts Block

Move Inline Scripts to the Bottom

Initiate Execution Asynchronously

Use Script Defer

Preserving CSS and JavaScript Order

Danger: Stylesheet Followed by Inline Script

Inline Scripts Aren’t Blocked by Most Downloads

Inline Scripts Are Blocked by Stylesheets

This Does Happen

7. Writing Efficient JavaScript

Managing Scope

Use Local Variables

Scope Chain Augmentation

Efficient Data Access

Flow Control

Fast Conditionals

Fast Loops

String Optimization

String Concatenation

Trimming Strings

Avoid Long-Running Scripts

Yielding Using Timers

Timer Patterns for Yielding

Summary

8. Scaling with Comet

How Comet Works

Transport Techniques

Polling

Long Polling

Forever Frame

XHR Streaming

Future Transports

Cross-Domain

Effects of Implementation on Applications

Managing Connections

Measuring Performance

Protocols

Summary

9. Going Beyond Gzipping

Why Does This Matter?

What Causes This?

Quick Review

The Culprit

Examples of Popular Turtle Tappers

How to Help These Users?

Design to Minimize Uncompressed Size

Educate Users

Direct Detection of Gzip Support

10. Optimizing Images

Two Steps to Simplify Image Optimization

Image Formats

Background

Characteristics of the Different Formats

More About PNG

Automated Lossless Image Optimization

Crushing PNGs

Stripping JPEG Metadata

Converting GIF to PNG

Optimizing GIF Animations

Smush.it

Progressive JPEGs for Large Images

Alpha Transparency: Avoid AlphaImageLoader

Effects of Alpha Transparency

AlphaImageLoader

Problems with AlphaImageLoader

Progressively Enhanced PNG8 Alpha Transparency

Optimizing Sprites

?ber-Sprite Versus Modular Sprite

Highly Optimized CSS Sprites

Other Image Optimizations

Avoid Scaling Images

Crush Generated Images

Favicons

Apple Touch Icon

Summary

11. Sharding Dominant Domains

Critical Path

Who’s Sharding?

Downgrading to HTTP/1.0

Rolling Out Sharding

IP Address or Hostname

How Many Domains

How to Split Resources

Newer Browsers

12. Flushing the Document Early

Flush the Head

Output Buffering

Chunked Encoding

Flushing and Gzip

Other Intermediaries

Domain Blocking During Flushing

Browsers: The Last Hurdle

Flushing Beyond PHP

The Flush Checklist

13. Using Iframes Sparingly

The Most Expensive DOM Element

Iframes Block Onload

Parallel Downloads with Iframes

Script Before Iframe

Stylesheet Before Iframe

Stylesheet After Iframe

Connections per Hostname

Connection Sharing in Iframes

Connection Sharing Across Tabs and Windows

Summarizing the Cost of Iframes

14. Simplifying CSS Selectors

Types of Selectors

ID Selectors

Class Selectors

Type Selectors

Adjacent Sibling Selectors

Child Selectors

Descendant Selectors

Universal Selectors

Attribute Selectors

Pseudo-Classes and Pseudo-Elements

The Key to Efficient CSS Selectors

Rightmost First

Writing Efficient CSS Selectors

CSS Selector Performance

Complex Selectors Impact Performance (Sometimes)

CSS Selectors to Avoid

Reflow Time

Measuring CSS Selectors in the Real World

Appendix: Performance Tools

Index