《High Performance Web Sites》之 Chapter A & B 读书笔记

《High Performance Web Sites》是我在借阅《Clean Code》时偶遇的一本小书。看见此书只觉得十分喜欢,就借了来。它同《Don’t Make Me Think》一样的薄,一样的是由各种 Tips 组成。 《High Performance Web Sites》通过数据和图表证明 —— 80 - 90% 的网页加载时间都卡在前端上面。要优化网站速度,最有效最省力的方法,自然是从前端下手。该书试图从 HTTP 的角度,给出好多优化网站加载速度的点子,不一定每一条都适合每个网站,但是总有几条能给每个网站带来巨大的收益。 这几天略翻了引言部分的 Chapter A 和 Chapter B。 Chapter A 用调查图表总结了前端表现的重要性。总结成一句话,就是 “用户终端响应时间只有 10-20% 花在下载HTML文档上,其余 80-90% 都花在下载页面的组件上”。这里的“组件”包括图片等。 Chapter B 概要介绍了 HTTP 协议的相关内容。主要介绍了各种 GET 请求和响应的 headers。 ordinary GET requests and responses 首先是一般的 GET 请求和回应的 Headers,如上图所示。向右的箭头是请求,下同。 Compression GET requests and responses 为了节约浏览和时间,可以压缩后传输。上图所示就是压缩传输的请求和回应的 Headers。压缩传输的概念在《CSS Mastery》里面(读书笔记)也有提到。传输的内容是否压缩的信息就包含在如图所示的 HTTP 头里面。 Conditional Get Requests and Responses 上图所示是一种有条件的 GET 请求及其回应的 Headers。浏览器在加载图片的时候往往会这样请求。其中, If-Modified-since 后面的内容是向服务器确认浏览器缓存中的内容是否过时。如果不过时,返回的就是如上图所示的 304 Not Modified。 Conditional GET responses when expires 同样,如果过时,返回的就是如上图的 200 OK。 Keep-alive 另外,HTTP 的早期实现是,每遇到一个 HTTP 请求就打开一个新的 socket 连接。而 HTTP 的很多请求都是在同一个服务器上的,因此这样比较低效。这时改进的方法是,如上图,向服务器请求时使用 keep-alive 的 Connection header。不需要时发送 Connection: close header。 理论上,HTTP/1.1 是不需要发送上图所示的 keep-alive 信息的,但是很多浏览器依然要求(本书影印版出版日期 2008 年 5 月)。 最后,Chapter B 推荐了进一步了解 HTTP 协议的读物,分别为 HTTP specification (http://www.w3.org/Protocols/rfc2616/rfc2616.html),还有 David Gourley 和 Brian Totty 的 HTTP: The Definitive Guide (O’Reilly; http://www.oreilly.com/catalog/httptdg)。