网站提速全攻略
网站页面的加载速度是用户体验中相当重要的一部分,yahoo推出了Yslow这个工具,它可以对你的网站速度的各项指标进行评级。通过这个工具,我们可以找到影响网页加载速度的原因,并针对性的进行优化。
根据Yslow的评分标准,我们可以在以下方面对网站进行重点的优化。
1.尽量减少HTTP请求的数量。
网页中不可避免的要引入一些文件,比如Js,CSS,背景图片等等,由于Http协议的无状态性,用户的每一次访问,都会重新向服务器请求所有文件,而大量Http请求的累加,正是影响网站速度的最主要原因。
所以我们尽可能的要将这些文件合并,网站只用一个JS文件,一个CSS文件,一个背景图片,是最完美的解决方案。
2.使用CDN网络
这种方法效果很好,但涉及到一定的投入,对于小网站来说,实现起来有些困难。所以这里略过。如果你不知道什么是CDN,请google.
3.Add an Expires header
Add an Expires header,通俗点说,就是让客户端第一次浏览你的网站时,把一些常用但改动不频繁的网页元素缓存起来,比如CSS,JS,各种图片等。我们可以在服务器端设定一个很长的时间,比如一个月,那么用户在一个月内再次访问你的网站时,就会直接调用本地的缓存内容,无需再重新请求服务器。
这里以apache服务器为例,如果服务器安装了expires模块(一般的虚拟主机商都有支持expires),就可以在.htaccess中添加下面的内容:
ExpiresActive On ExpiresDefault A600 ExpiresByType image/x-icon A2592000 ExpiresByType application/x-javascript A2592000 ExpiresByType application/javascript A2592000 ExpiresByType text/javascript A2592000 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
上面字母A后面的数字是秒,也就是缓存的时间。
3.给网站启用Gzip压缩
Gzip可以将用户请求的网页元素进行压缩传输,压缩比很高,大智若鲁的html压缩比达到了百分之七十。我们可以对html,css,js,php,xml等文件进行gzip压缩,但不要试图压缩图片文件,据说越压越大的。
如何启用gzip压缩呢?主要有两种方法:
最好的情况是你的主机采用的是 Apache 2,并安装启用了mod_deflate 模块,虚拟主机需要询问主机商。如果主机支持就很简单了,只需要在 .htaccess 文件中加入以下代码可以压缩 HTML, PHP, JS, CSS, XML 后缀的文件。
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-httpd-php application/x-javascript
如果主机不支持,就得用下面很麻烦的方法了:
已为css文件启用gzip为例:
把css文件后缀改为php,在你要压缩的css头部添加以下代码:
在尾部添加:
< ?php if(extension_loaded('zlib')) {ob_end_flush();} ?>然后把页面中的css路径改为此php文件就可以了。
如果压缩js,方法同上,只是要把头部的代码换成:
这种方法很麻烦,需要对每个文件逐一的更改,如果你是懒人,也可以试试下面的方法:
在网站根目录创建文件:gzip.php,写入如下代码:
'text/css', 'js' => 'text/javascript', 'html' => 'text/html', 'htm' => 'text/html', ); $file = isset($_GET['url']) ? $_GET['url'] : null; $extension = explode('.', $file); $extension = array_pop($extension); if(isset($allowed[$extension])) { $pos = strpos($file, '..'); if ($pos === false && is_file($file)) { @ob_start ('ob_gzhandler'); header("Content-type: {$allowed[$extension]}; charset: UTF-8"); readfile($file); } else { header('HTTP/1.1 404 Not Found'); } } ?>
然后修改.htaccess,添加下面的规则:
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} ^.*\.(css|js|html|htm)$
RewriteRule ^(.*)$ gzip.php?url=$1 [QSA,L]这样,就会给网站的所有css,js,htm文件启用gzip压缩了。但是这种方法会占用一定的系统资源,如果你的主机配置过低,反而会减慢速度,请根据实际情况应用。
4. Put CSS at the top / 将Css文件放在头部
很好理解的一条,主要是为了避免最后加载Css引起的浏览器白屏,改善用户体验。
5. Put JS at the bottom / 将Js文件放在底部
同样很容易理解,为了让DOM先行加载。
6.关闭ETAGS
一般的小型网站并不需要Etag,我们可以关闭它以便节约带宽。
在.htaccess中添加:
FileETag None Header unset Last-Modified
【你可能还喜欢这些文章:】












ETAG的本来需求就是节约服务器带宽啊!
文中表达的有错误,是想说节省资源来着,其实对小网站来说 ETAG校验开不开起无所谓,如果是配置较低的虚拟主机,反而会加大资源开销。但是 http1.1 建议开启etag。
另外,如果使用cdn的同时开启etag,会使etag失效,如果已经使用了cdn,就没必要开启etag