《高性能网站建设指南》阅读笔记_规则1-减少HTTP请求

本文部分内容参考网络内容,为了实验的需要,没有隐去用来实验的网站名,文中观点仅用于个人备忘或者学习探讨,特此声明。

序言:

可能很多人跟我一样,一直以为性能主要是后端问题。但是这本书中的实例表明,前端问题可能消耗掉整体时间的80%到90%,而只有10%到20%的时间花在了下载HTML文档上。一般我们认为前端性能无非就是坚持使用外部的CSS和JS,尽量减少CSS和JS引用的数量,还有对JS的压缩。但是这本书告诉我们,我们要做的工作远不止这些。

本书按照优先级顺序介绍了14个性能规则。但是并非每个规则都要应用于每个网站,也不是每个网站都应该按照同一种方式运用一个规则,但是每个规则都值得考虑。

我自己做了下实验:

百度:0.013/0.075=17%     0.014/0.040=35%

page speed 评分:99

淘车买车首页:0.699/7.559=9%       0.667/2.978=22%  

page speed 评分:68

淘车网车源列表页:0.057/4.734=1.2%     0.055/2.112=2.6%    

page speed 评分:84

二手车之家车源列表页:0.068/2.164=3%       0.063/1.183=5%   

page speed 评分:82

 

我们的问题大概在一下这几个方面:

启用 Keep-Alive

由同一网址提供资源

将图片组合为 CSS贴图定位

优化图片

 

我们做到了:

 

暂缓 JavaScript解析

压缩 JavaScript

压缩 CSS

压缩 HTML

指定图片大小

将查询字符串从静态资源中删除

优化样式表和脚本的排列顺序

使用浏览器缓存

使目标网页重定向可缓存

内嵌小型 CSS

内嵌小型 JavaScript

启用压缩

将 CSS放在文档标头处

将图片组合为 CSS贴图定位

尽量减少请求的数据量

尽量减少重定向

指定字符集

请指定一个“Vary: Accept-Encoding”标头

请指定缓存验证工具

避免出现错误的请求

避免在 CSS中使用 @import

首选异步资源

 

下面是对以上提到的14条规则的具体介绍:

 

规则1-减少HTTP请求

既然有80%-90%的时间花在为HTML文档所引用的所有组建(图片,脚本,样式表,Flash等)进行的HTTP请求上,因此改善响应时间的最简单途径就是减少组件的数量,并由此减少HTTP请求数量。这是最重要的原则,如果14条规则里只能选一条,那就是它了.

图片地图:如果用图片做导航链接,我们可以将多个图片完成的功能,使用一个图片,根据的不同区域来响应不应的请求。因为一个图片只有一次HTTP请求,而多个图片需要有多次请求。

<!-- 注意 img usemap的内容要和map name一致 -->

<img usemap=”#map1” src=”/路径/图片”>

<map name=”map1”>

<area shape=”rect” cords=”0,0,31,31” href=”链接文件名” title=”标题名”>

<area shape=”rect” cords=”0,0,31,31” href=”链接文件名” title=”标题名”>

</map>

使用:http://stevesouders.com/hpws/imagemap-no.php

未使用:http://stevesouders.com/hpws/imagemap.php

CSS Sprites

原理同上,但比上面的更灵活

CSS Sprites方式处理例子:

<style>

.home{background-position:00;margin-right:4px;margin-lift:4px;}

</style>

书中的示例:

http://stevesouders.com/examples/sprites.php  

内联图片 是将简单图片的编码数据直接保存在URL自身之中。(需要内联编码技术)

例如:<img src="data: image/gif; base64,FNMSDAAAAA......"

http://stevesouders.com/hpws/inline-images.php

合并脚本和样式表:每个文件都会导致一个HTP请求,尽量将css和js合并到一个文件中;

单独脚本:http://stevesouders.com/hpws/combo-none.php

联合脚本:http://stevesouders.com/hpws/combo.php

 

把原有的多个样式表文件合成一个,可以使用户在浏览网页时只需下载一个CSS文件。这样减少了HTTP请求,速度自然就快了些。Javascript文件也一样。不过这样做似乎不符合模块化的开发原则。本书作者提出的建议是:开发时仍用多个文件,部署时再把它们合并在一起。

 

小结 :前三种方法的起到的效果差不多,根据书中提供的例子,理论上都能节约将近一半的时间。但是图片地图中的图片必须是连续的,在定义区域坐标时,如果采取手工的方式则很难而且容易出错,而且除了举行之外几乎无法完成其它形状,通过DHTML创建的图片地图IE不支持。CSS精灵没有图片连续的限制,非常灵活,而且它还有个额外的优点,合并后的图片会比分离的图片的总和要小。这是因为它降低了图片自身的开销(颜色表,格式信息等)。内联图片的缺点是IE不支持,而且对图片的大小也有限制。所以CSS精灵是最佳选择,我们要求合并脚本和样式表,要求不超过三个,包括头部一个,框架一个,页面里只能用一个了。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值