《高性能网站建设指南》笔记1
高性能网站建设指南–认识HTTP
网站加速前段性能黄金法则:
只有10%-20%的最终用户响应时间花在了下载HTML文档上,其余的80%-90%时间花在了下载页面的所有组件上。
认识HTTP
HTTP是一种客户端/服务器协议,由请求和响应构成。浏览器向一个特定的URL发送HTTP请求,URL对应的宿主服务器发回HTTP响应。该协议使用简单的纯文本格式。
请求类型有GET,POST,HEAD,PUT,DELETE,OPTIONS和TRACE。
最常见的请求GET.以后可能会使用其他的请求类型,请参考REST架构。
GET请求包含一个URL,然后是头文件。HTTP响应包含状态码、头和响应体。
一个HTTP头:
浏览器
=====>
GET /us.js.yimg.com/lib/common/utils/2/yahoo_2.0.0-b2.js
HTTP 1.1
Host:us.js2.yimg.com
User-Agent:Mozila/5.0(…)Gecko/20061206 Firefox/1.5.09
服务器
<========
HTTP 1.1 200 OK
Content-Type: application/x-javascript
Last-Modified: Wed, 22 Feb 2006 04:15:54 GMT
Content-Length:355
……………………
压缩
如果浏览器和服务器都支持压缩的话,可以使用压缩来减少响应的大小。
浏览器可以使用Accept-Encoding 头来声明它支持压缩。
服务器使用Content-Encoding头来确定响应已被压缩。
浏览器
=====>
GET /us.js.yimg.com/lib/common/utils/2/yahoo_2.0.0-b2.js
HTTP 1.1
Host:us.js2.yimg.com
User-Agent:Mozila/5.0(…)Gecko/20061206 Firefox/1.5.09
Accept-Encoding: gzip,deflate
服务器
<========
HTTP 1.1 200 OK
Content-Type: application/x-javascript
Last-Modified: Wed, 22 Feb 2006 04:15:54 GMT
Content-Length:355
Content-Encodeing: gzip
……压缩后的代码
条件GET请求
如果浏览器在起缓存中保留了组件的一个副本,但并不确定它是否有效,就会生成一个条件GET请求。
如果确定缓存的副本有效,浏览器就可以使用缓存中的副本,这会得到一个更小的响应和更好的用户体现。
根据响应中的Last-Modified头,浏览器可以知道组件的最后的修改时间。浏览器会使用If-Modified-Since头将最后的修改时间发送给服务器。
Expires过期时间
条件GET请求和304响应有助于让页面加载的更快,但仍然需要客户端和服务器进行确认是否需要重新下载。
Expires头通过明确指出浏览器是否可以使用组件的缓存副本来消除这个需求。
服务器
<========
HTTP 1.1 200 OK
Content-Type: application/x-javascript
Last-Modified: Wed, 22 Feb 2006 04:15:54 GMT
Content-Length:355
Expires: Wed, 05 Ict 2016 19:16:20 GTM
Keep-Alive
HTTP构建在TCP协议上。在早期的HTTP的早期实现中,每个HTTP请求都要打开一个socket连接。这样做效率很低,每个页面中存在很多个HTTP连接,在同一服务器会产生多个socket连接,
持久连接Keep-Alive的引入解决了多对一请求服务器导致效率低的问题。
在HTTP 1.1 在默认中是开启的。










Comments