前幾天寫了一篇合并css和js文件,加快瀏覽速度的文章,感覺上速度確實有點提高,而最后把速度仍然比較慢歸因于國外服務器數據傳輸的速度慢 !后來在Storyday那里看到一篇wordpress提速的文章,壓縮css文件和js來提速。其實很早看關于wp優化的文章的時候就看到過對css和js進行壓縮來提速,但是一直都不以為然。因為我想css和js文件經過合并,然后使用CSS Tweak和Shrinksafe分別壓縮css和js文件,就可以把兩者的總大小縮減至16K+3K,再使用Gzip壓縮意義不大。現在發現我徹底錯了!
我合并了css和js文件,只是減少了HTTP Requests。因為每個HTTP Requests都有一定的延時,所以較少HTTP Requests數量自然可以縮短一定的訪問時間。但是需要下載的首頁代碼的大小也是一個重要的因素。使用Web Page Analyzer查看了下本站首頁,其實html代碼僅僅9K,而css和js一起卻將近20K,也就是說其實大部分的時間都在下載css和js文件,而且它們是在head里載入的,下載完成之前,只能看到空白頁,這樣影響的訪問速度非常明顯!所以對css和js文件進行壓縮是非常有必要的!
嘗試使用wordpress提速這篇文章里提供的Gzip壓縮css和js文件的代碼,但是發現這樣會導致整個style.css不起作用!也不知道為什么?以前在我的blog里使用Storyday的cos-html-cache插件里讀取cookies代碼也會出現一些問題!難道是RPWM?
現在使用閱微堂提供的Gzip壓縮代碼如下:
<?php
$file="all.js";
header("Expires:".gmdate("D, d M Y H:i:s", time()+15360000)."GMT");
header("Cache-Control: max-age=315360000");
$mtime = filemtime($file);
$gmt_mtime = gmdate('D, d M Y H:i:s', $mtime) . ' GMT';
header("Last-Modified:" . $gmt_mtime);
$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");
}
if(extension_loaded('zlib')){ob_start('ob_gzhandler');}
echo implode('', file($file));
if(extension_loaded('zlib')){
ob_end_flush();
}
?>
上面代碼的將本站20K左右的css和js代碼壓縮到了6k以下,而且它不僅壓縮代碼,還要求瀏覽器端Cache這個文件,這樣不用每次瀏覽都下載這些文件。如果你沒有進行css和js合并(強烈建議合并)的話,那么在echo處添加多個css或者js文件即可。
現在的訪問速度真正有了一個質的飛躍,首頁的訪問時間至少提高了4s
下一篇 來自阿里巴巴的海外淘寶聯盟