Expires Header
利用.htaccess对网站加速及SEOYahoo!的Firefox插件Yslow推出已经有段时间了,在刚推出的时候还是一如既往的看到一大批中国人在写着同样的介绍性文章,然后就当这个东西从来没出现一样把它遗忘了。Yslow不是FasterFox,不是介绍给别人装上就会有什么改变的,你得知道怎么用才行。Yslow最大的用处其实就是检测,帮你判断网站在哪些地方做得不好而影响了网站载入速度,如何改善是要自己动手的。
在Yahoo!的开发日志中,提到了十三条优化网站载入速度的规则,其实就是在high performance websites这本书中(下载此书)提到的那十三条,Yslow也正是对网站在十三个方便的表现进行测试。对于如何进行改善,其中大部分在开发日志中已经有相关的指导,而且我想绝大部分的人都有足够的智商理解那些方法。这里只对开发日志中没有明确指明方法的 Expires Header做补充。
Add an Expires header,给文件加上关于过期时间的header报文。
这个文件过期时间,其实就是通过header报文来指定特定类型的文件在浏览器中的缓存时间。有些文件(例如样式表中调用的背景图片和文章中调用的图片)其实在很长一段时间内我们都不会对它们有什么改变,这类文件可以设置非常长的缓存时间,这样浏览器以后就不需要再从服务器下载这些文件而直接从缓存中读取,从而大大加速网站的载入速度。
我们要做的,是在网站的.htaccess文件中写入以下内容:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault A600
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A604800
ExpiresByType text/css A604800
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType text/plain A86400
ExpiresByType application/x-shockwave-flash A2592000
ExpiresByType video/x-flv A2592000
ExpiresByType application/pdf A2592000
ExpiresByType text/html A600
</IfModule>
text/css表示样式表文件,text/plain代表的纯文本类文件,依次类推。那个A2592000就表示这种类型文件在浏览器中的缓存时间,以秒为单位。一天86400秒,2592000就表示这类文件可以缓存30天。如果你不是经常修改模板,那样式表文件和javasctipt文件基本上也可以设置缓存一周到一个月左右。text/html文件不要设置太长的缓存时间,因为这些东西修改的频率很高,而且大部分blog的访客平均访问时间能到10分钟的并不多。
另外Yslow中还提到了一点就是关于文件Etag标签的设置问题,其实最佳设置方案就是关闭Etag标签。在.htaccess中写入一行如下代码即可:
FileETag None
优化后LifeTyper最后的Yslow得分是98分,因为我这里的stylesheet很小,javascript脚本也就一个,没有必要专门为了这两个文件开启Gzip而做优化。
CDN那部分其实是假的,你见过几个blog会给自己的空间专门购买CDN服务的?作弊只是让这个得分好看一点而已,方法很简单:
在firefox地址栏输入about:config打开FF的参数设置界面,新建一个名为extensions.firebug.yslow.cdnHostnames的字符串变量,把你的网站地址作为这个变量的值。
这样Yslow就会把你的网站当成一个CDN服务器,认为这个网站上的所有文件都是经过CDN加速的,自欺欺人玩玩而已,没什么实际用处。
利用.htaccess进行地址转向,对PageRank有一定帮助。
这种方法,就是把yourdomain.com的流量全部301转向到www.yourdomain.com(或者反过来)。其实对于这种方法,国外有人认为对PageRank没有帮助。我觉得是因为他们看到Google管理员工具中有一个首选域工具,可以指定Google的爬虫把 www.yourdomain.com或者yourdomain.com作为抓取和排名的首选域,转向似乎就没有必要了。但确实又有不少人证实这是有效的,反正目前还没有人说这种方法会对SEO或者pagerank有什么损害。
在.htaccess中写入:
Options +FollowSymlinks All -Indexes
rewriteEngine on
rewriteBase /
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
把domain.com改成你的网站域名即可。