Dreamhost上的GZIP & Cache
用WordPress的都知道,WordPress可以打开GZIP传输,压缩比率能达到60%到80%。下表是本blog首页在Web Page Analyzer上的测试报告,此页面上包括css, js所有东西加起来才14K。
| QTY | SIZE# | TYPE | URL |
|---|---|---|---|
| 1 | 6999 | HTML | http://zhiqiang.org/blog/ |
| 1 | 2593 | SCRIPT | http://zhiqiang.org/blog/.../comment.js.php |
| 1 | 2302 | SCRIPT | http://zhiqiang.org/.../all.js.php |
| 1 | 2048 | CSS | http://zhiqiang.org/.../style.css.php |
| 1 | 431 | IMG | http://feeds.feedburner.com/~fc/zhiqiang |
| 5 ^ | 14373* | Total (^unique objects) |
Dreamhost还用的是Apache 1.3(Am I wrong?),所以没有mod_deflate模块,而用的是mod_gzip模块,这个模块直接在磁盘上读写,效率比前者要低。不过有总比没有好,毕竟压缩比率很高。
但诡异的是,服务器默认对CSS和JS不作压缩。写信去问了dreamhost客服,也没有什么好方法。最后我采用的方法是用php给包一层:用style.css.php来代替style.css:
<?php # this is the file style.css.php, who contains style.css # set the request file name $file="style.css"; # Set Expires, cache the file on the browse # Delete it if you don't want it header("Expires:".gmdate("D, d M Y H:i:s", time()+15360000)."GMT"); header("Cache-Control: max-age=315360000"); # set the last modified time $mtime = filemtime($file); $gmt_mtime = gmdate('D, d M Y H:i:s', $mtime) . ' GMT'; header("Last-Modified:" . $gmt_mtime); # output a mediatype header $ext = array_pop(explode('.', $file)); switch ($ext){ case 'css': header("Content-type: text/css"); break; case 'js' : header("Content-type: text/javascript"); break; case 'gif': header("Content-type: image/gif"); break; case 'jpg': header("Content-type: image/jpeg"); break; case 'png': header("Content-type: image/png"); break; default: header("Content-type: text/plain"); } # GZIP the content if(extension_loaded('zlib')){ob_start();ob_start('ob_gzhandler');} # echo the file's contents echo implode('', file($file)); if(extension_loaded('zlib')){ ob_end_flush(); # set header the content's length; # header("Content-Length: ".ob_get_length()); # (It doesn't work? ) ob_end_flush(); } ?>
上面代码不仅压缩代码,而且要求浏览器端Cache这个文件。甚至,可以把所有css文件都放到一个php文件里,只要在echo处加入多个文件即可。
下面是一些常用的测试网站:
- GZIP Test: 测试一个URL地址是否支持GZIP传输,以及压缩比率。
- Web Page Analyzer:网站页面速度报告
- Cacheability Test: 测试一个页面是否可Cache
参考资料:
good job
太厉害了,把速度做到极致了。
不知道bH能不能压缩CSS和JS格式呢?
现在你站的速度比以前又快了
BH也不能压缩CSS和JS,而且HTML也不能压缩,实在是一个非常发指的事情。我现在不得不把我的静态页面又用php处理一遍。
不知道以前的版本,不过DH现在的Apache版本是2.0的
不知道mod_deflate压缩效果比Gzip高出多少?
晕,一直没有意识到DH还有apache2。查了一下,的确新的服务器是apache2。而且如果你的服务器上还是apach 1.3,可以通过添加a subversion repository的方式,域名将自动转到apache2的机器上。也可以通过向客服提交申请的方式。见http://forum.dreamhosters.com/beginners/65491-version-of-Apache.htm。
mod_deflate的压缩效果和GZIP差不多,他们用的算法都差不多的。不过deflate是内存操作,gzip是磁盘操作,后者的限制主要在于磁盘I/O的速度。所以,deflate要好一些。
俺亏了,不知道BH有没有类似的东西。
还有一个问题,用Cacheability Test:这个工具看来才知道,做过301重定向的元素,包括图片都不能被cache,不知道对速度有什么影响
图片你做301重定向干嘛?
最好的cache是浏览器直接利用机器cache,连头文件都不发(只适用于源文件很少变动的文件,比如固定下版本的css,js),这样你服务器段做没做重定向,浏览器这里根本就不知道,也就无所谓了。
这样的cache可以通过php header要求浏览器段执行,我给的那些代码的第二段就是。
谢谢~
不是单独图片做重定向,是整站做了重定向
效果真是太明显了~~哈哈
[...] 现在使用阅微堂提供的Gzip压缩代码如下: <?php [...]
不知道为什么,我的站上用 mod_deflate 不能压缩 ... jQuery 一下就占掉30K...
请教下!
wp2.51 怎么启用 GZIP 、、
WP 2.5和以上版本移除了对于GZIP的控制选项。要想使用GZIP,你可以在服务器端打开这个选项。或者使用插件,比如用这个
唔,等下..我又测试了下.我的日志页面去检测的话 会检测到开启和压缩率..首页检测不到..!我去关闭这个插件,;来测试下 是否像传言说的那样 2.51检测服务器使用可以GZIP 而自动开启.!
唔.看来传言是假的,并非根据服务器是否支持而开启的.嗯 谢谢了~!
开启也关闭这个插件 虽然压缩了 但速度无明显变化!.等需要的时候在开启吧!
终于弄明白2.51 GZIP了 .谢谢!