一、尽可能的减少 HTTP 的请求数
这个第一条是我们大多数SEO所知道的,我再做一个简单的描述:大多数的HTTP请求都是前端的,用户的大多数时间都被用来下载图片、CSS样式表、各种Scripts、Flash等等。当然或许将css,js文件拆分多个是因为css结构,共用等方面的考虑。阿里巴巴中文站当时的做法是开发时依然分开开发,然后在后台 对js,css进行合并,这样对于浏览器来说依然是一个请求,但是开发时仍然能还原成多个,方便管理和重复引用。yahoo甚至建议将首页的css和 js 直接写在页面文件里面,而不是外部引用。因为首页的访问量太大了,这么做也可以减少两个请求数。而事实上国内的很多门户都是这么做的。
而css sprites是指只用将页面上的背景图合并成一张,然后通过css的background-position属性定义不过的值来取他的背景。淘宝和阿里巴巴中文站目前都是这样做的。有兴趣的可以看下淘宝和阿里巴巴的背景图。
http://www.csssprites.com/ 这是个工具网站,它可以自动将你上传的图片合并并给出对应的background-position坐标。并将结果以png和gif的格式输出。
二、使用CDN(内容分发网络)Content Delivery Network
之前曾经问过张智勇公子关于 CDN 是否对 SEO 有影响,在征询了技术老总的意见之后,这个影响其实几乎可以忽略的,反而是用户端的速度体验提升了,对网站的正向作用更大。
CDN 加速现在很流行,几乎稍微大一点的网站都有用这个服务,就是将网站的镜像服务备份到多个服务器节点,从而加速该服务器周围的用户访问。
更详细地内容大家可以参考百度百科上对于CDN的解释
三、添加Expire/Cache-Control 头
这个规则有两个东西:
对静态的组件:设置为永不过期;
对动态的组件:设置为一个合理的缓存控制头来帮助有条件的相应.
通过设置Expires header 来缓存这些文件。Expire其实就是通过header报文来指定特定类型的文件在览器中的缓存时间。大多数的图片,flash在发布后都是不需要经常修 改的,做了缓存以后这样浏览器以后就不需要再从服务器下载这些文件而是而直接从缓存中读取,这样再次访问页面的速度会大大加快。
一个典型的HTTP 1.1协议返回的头信息:
HTTP/1.1 200 OK
Date: Fri, 30 Oct 1998 13:19:41 GMT
Server: Apache/1.3.3 (Unix)
Cache-Control: max-age=3600, must-revalidate
Expires: Fri, 30 Oct 1998 14:19:41 GMT
Last-Modified: Mon, 29 Jun 1998 02:28:12 GMT
ETag: “3e86-410-3596fbbc”
Content-Length: 1040
Content-Type: text/html
其中通过服务器端脚本设置Cache-Control和Expires可以完成。
如,在php中设置30天后过期:
在asp中设置绝对时间过期:
也可以通过配置服务器本身完成,这些偶就不是很清楚了,呵呵。想了解跟多的朋友可以参考http://www.web-caching.com/
四、Gzip压缩
这个是目前应用最多的加速方式之一,代码也很简单,gzip的压缩比例非常大,一般压缩率为85%,就是 说服务器端100K的页面可以压缩到25K左右再发送到客户端。雅虎开发者特别强调, 所有的文本内容都应该被gzip压缩: html (php), js, css, xml, txt。
五、将css放在页面最上面
六、将script放在页面最下面
七、避免在CSS中使用Expressions
css表达是的执行次数是远远多于我们想象的,往往会严重地影响性能。而且,它只能在IE中执行。所以因尽量地避免它。这一条以前倒没想过,个人用 这个就是在对ie使用max-width和min-width属性的时候。大家知道IE是不支持max-width和min-width属性的。有时候的 页面(特别是自适应大小的页面)为了能在分辨率小到一定程度后还能显示要用到这个功能,怎么办。当时我的做法就是利用expressions:
八、外置javascript和css文件
这个地球人都知道
九、减少DNS查询
在 Internet上域名与IP地址之间是一一对应的,域名(SEMWatch.org)很好记,但计算机不认识,计算机之间的“相认”还要转成ip地址。在网络 上每台计算机都对应有一个独立的ip地址。在域名和ip地址之间的转换工作称为域名解析,也称DNS查询。一次DNS的解析过程会消耗20-120毫秒的 时间,在dns查询结束之前,浏览器不会下载该域名下的任何东西。所以减少dns查询的时间可以加快页面的加载速度。yahoo的建议一个页面所包含的域 名数尽量控制在2-4个。这就需要对页面整体有一个很好的规划。
十、压缩 JavaScript 和 CSS
压缩js和css的左右很显然,减少页面字节数。容量小页面加载速度自然也就快。而且压缩除了减少体积以外还可以起到一定的保护左右。
当然,压缩带来的一个弊端就是代码的可读性没了。相信很多做前端的朋友都遇到过这个问题:看Google的效果很酷,可是去看他的源代码却是一大堆 挤在一起的字符,连函数名都是替换过的,汗死!自己的代码也这样岂不是对维护非常不方便。