《高性能网站建设指南》读书笔记
(一)绪言
1、绪言A
性能黄金法则:
只有10%~20%的最终用户响应时间花在了下载HTML文档上。其余的80%~90%时间花在了下载页面中的所有组件上。
2、绪言B
HTTP概述:
HTTP是浏览器和服务器通过Internet进行相互通信的协议。
请求的类型:GET POST HEAD PUT DELETE OPTIONS TRACE。
压缩:浏览器使用Accept-Encoding头来声明它可以支持压缩。服务器使用Content-Encoding头确认响应已被压缩。
条件GET请求:如果浏览器在其缓存中保留了组件的一个副本,但并不确定它是否仍然有效,就会生成一个条件GET请求。
基于响应中的Last-Modified头,浏览器可以知道组件最后的修改时间。
使用If-Modified-Since头将最后修改时间发送给服务器。服务器返回304状态码并不发送响应体,表示缓存的副本有效。
有点:条件GET请求和304响应有助于让页面加载的更快。 缺点:但仍需要在客户端和服务器之间进行一次往返确认,以执行有效性检查。
Expires:Expires头明确指出浏览器是否可以使用组件的缓存副本。当浏览器看到响应中有一个Expires头时,它会和相应的过期时间组件一起保存到其缓存中。只要组件没有过期,浏览器就会使用缓存版本而不会进行任何的HTTP请求。
Keep-Alive:持久连接,使用Connection头来指出对Keep-Alive的支持。Connection: close头来关闭连接。对于HTTPS来说甚至更为重要,因为建立新的安全socket连接要消耗更多的时间。
(二)规则
1、减少HTTP请求
图片地图:使用<map>标签。缺点:在定义图片地图上的区域坐标时,如果采用手工的方式则很难完成且容易出错,而且除了矩形外几乎无法定义其他形状。通过DHTML创建的图片地图则在IE中无法工作。
CSS Sprites:通过background-position属性指定CSS Sprites的偏移量。
内联图片:通过使用data: URL模式可以在Web页面中包含图片但无需任何额外的HTTP请求。目前IE不支持。
合并脚本和样式表
2、使用内容发布网络(CDN)
服务器离用户更近,请求响应的时间更短。性能,节省成本。
CDN服务优点:缩短响应时间,服务包括备份、扩展存储能力和进行缓存。有助于缓和Web流量峰值压力。
缺点:响应时间可能会受到其他网站——甚至很可能是竞争对手流量的影响。无法直接控制组件服务器所带来的特殊麻烦。如果CDN服务的性能下降了,工作质量也随之下降。
3、添加Expires头(为组件添加长久的Epires头)
最大化的利用浏览器的缓存能力来改善页面的性能。避免不必要的HTTP请求。
Expires头的限制:因为使用一个特定的时间,要求服务器和客户端的时钟严格同步。过期日期需要经常检查,并且一旦未来这一天到来了,还需要在服务器配置中提供一个新的日期。
HTTP1.1引入Cache-Control(具有优先权,避免时钟同步问题)头来克服Expires头的限制。Cache-Control使用max-age指令指定组件被缓存多久。mod_expires Apache模块通过Expires-Default指令来完成。
4、压缩组件
减小HTTP响应的大小来减少响应时间。
gzip是目前最流行和最有效的压缩方法。