google page speed最佳实践

优化缓存

1、影响浏览器的缓存
建议:
为所有静态资源设置缓存
设置Expires最小不要小于1个月,最好是接近一年。Expres比Cache-Control:max-age更受欢迎因为可以获得更广泛的支持。不要设置超过一年,因为这违反了RFC的准则。
设置Last-Modified日期为最近资源需要改变的时间。
 
对动态可用缓存使用“身份识别”
通过链接到资源的唯一url(每次改变资源时同时改变其文件名)来改变缓存
 
为IE设置Vary的header
 
避免firefox中URL造成的缓存冲突
firefox通过hash表存储url的缓存,但hash值仅仅有8个字符,可能会造成hash冲突,所以你需要确保你的资源urldiff多于8字符边界。

2、影响代理的缓存
利用Cache-control:public的头可以让资源缓存在一个web代理服务器上面来让其他用户使用。
建议:
不要在静态资源的url上面添加查询字符串
 
不用在代理服务器上缓存设置了cookie的资源
 
要有使用代理缓存js和css文件的意识
 
减少RTT(round-trip times)
 
RTT是客户端发送请求到服务器,服务器返回响应的网络通信时间,不包括数据传输需要的时间。也就是说,它包括在电缆上往返的时间。但是排除字节传输下载的全部时间。
例如,一个浏览器与服务器发起首次连接,它必须引发最少3次RTT:第一次RTT是做DNS域名解析;第二次RTT是做TCP连接;第三次RTT是做http请求和http响应的第一个字节。
 
1、减少DNS查找
减少静态资源中的唯一主机的数目可以降低浏览器解析DNS的数目,因此,RTT延迟了。
有一条规则是:最好不要为了6个不到的资源用多个主机,少于2个资源放在一台主机中是特别浪费的。也没必要使用5台机上的主机。
建议:
尽可能的使用URL路径来代替主机域名
例如developer.example.com可以被www.example.com/developer代替。除非有技术上的原因需要不同的主机域名。
 
将从同一主机域名下的需要先加载的js文件作为主要文件送达
 
2、最小化重定向次数
建议:
消除没必要的跳转
 
利用服务器重写用户键入的链接
 
在后台跟踪web流量
 
使用HTTP而不是js或者meta来重定向
 
 
3、避免死链
移除死链、404、410错误请求,避免浪费请求。
 
4、合并外联js
建议:
恰当的分割文件
将脚本放到文档中正确的位置(比如底部),最大化并行加载。
 
5、合并外联css
 
6、合并图片,使用css sprites
建议:
对一起加载的图片使用sprite
 
GIF和PNG图片优先使用sprite
 
小图片优先sprite
 
可缓存的图片使用sprite
 
使用sprite工具
 
尽量减少sprite图片中的空白空间
 
将色彩范围相近的图片进行sprite
 
7、优化样式表和脚本的顺序
建议:
将外联脚本放在外联样式表之后
 
将行内脚本放在其他资源之后
 
8、避免使用document.write
 
9、避免使用css @import
 
10、恰当的异步加载资源
使用<script>元素
 
11、通过主机域名并行下载
 
最小化请求的开销
 
1、最小化请求的大小
建议:
使用服务器端的存储为大多数的cookie来做有效载荷
在cookie里存key,在服务器端存value。
 
移除没有用的或者重复的cookie
 
2、静态资源来自一个cookie很少(cookieless)的域
建议:
利用代理缓存
 
不要将需要提前加载的js放到cookieless域中加载
 
服务器负载最小化
 
使用压缩
建议:
让你写的页面能够更有效的压缩
保持代码html和css代码一致需要做:
1、按照字母排序指定css键对值
2、按照字母排序指定html属性
3、对html属性使用一致的引号
4、使用一致的字母(小写字母)
不要对图片或者二进制文件使用gzip压缩
移除没有用到的css
 
压缩javascript
 
压缩css
 
压缩HTML
 
延迟加载javascript
 
优化图片
 
服务器缩放图片尺寸
 
使用一个固定的URL来提供资源(DNS层面)
 
优化浏览器渲染
 
使用有效的css选择器
 
避免使用css表达式
 
把css放在文档头部
 
指定图片的尺寸
 
指定http中的character设置
指定content-type和正确的character编码
 
 
 
 
 
 
posted @ 2013-08-28 18:53  清风妙康  阅读(162)  评论(0编辑  收藏  举报