Apache+php 網站效能最佳化
1.開啟GZIP壓縮(針對檔案大小) 網頁大小可以壓縮率可以達到百分之70多;
一、開啟php.ini設定檔,找到zlib.output_compression = Off,將
zlib.output_compression = Off;
zlib.output_compression_level = -1
修改為
zlib.output_compression = On;
zlib.output_compression_level = 6
php gzip配置知識點:
1、預設php是不開啟zlib整站壓縮輸出的,而是通過對需要壓縮輸出的頁面使用ob_gzhandler函數實現,兩者只能二選一,否則會報錯。
2、zlib.output_compression預設值為Off,你可以將其設定為On,或者output buffer size(預設為4k)
3、zlib.output_compression_level代表壓縮比,預設推薦設定壓縮比值為6,可選範圍為1-9,-1代表關閉php zlib(gzip)壓縮
二、儲存php.ini設定檔,並重啟apache伺服器
三、開啟apache 設定檔httpd.conf,配置裝載deflate_module
#LoadModule deflate_module modules/mod_deflate.so
去除開頭的#號;
設定壓縮類型
<IfModule deflate_module>
SetOutputFilter DEFLATE
# Don’t compress images and other
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|doc)$ no-gzip dont-vary
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
AddOutputFilterByType DEFLATE application/ms* applicationnd* application/postscript application/javascript application/x-javascript
</IfModule>
並重啟apache即可。
2.減少request
一、檔案合并
方法(1)
下面是使用PHP通過GZIP壓縮CSS的執行個體。
在存放CSS的檔案夾中建立一個style.php檔案,在此檔案中加入以下代碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
if(extension_loaded('zlib')){//檢查伺服器是否開啟了zlib拓展 ob_start('ob_gzhandler'); } header ("content-type: text/css; charset: gb2312");//注意修改到你的編碼 header ("cache-control: must-revalidate"); $offset = 60 * 60 * 24;//css檔案的距離現在的到期時間,這裡設定為一天 $expire = "expires: " . gmdate ("D, d M Y H:i:s", time() + $offset) . " GMT"; header ($expire); ob_start("compress"); function compress($buffer) {//去除檔案中的注釋 $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer); return $buffer; } //包含你的全部css文檔 include('global.css'); include('layout.css'); if(extension_loaded('zlib')){ ob_end_flush();//輸出buffer中的內容,即壓縮後的css檔案 } ?>
|
如果你處理的是JavaScript檔案,你需要將上面代碼中的第5行的Content-type修改成以下:
header ("content-type:application/x-javascript; charset: gb2312");
同樣需要注意的是檔案的編碼,這裡我用的是gb2312,如果你採用的是UTF-8或其他編碼,修改成對應的即可。
修改完成之後,在原引入CSS和JS檔案的地方,將.css尾碼/.js尾碼的檔案更換成這個style.php檔案即可,如:
script type="text/javascript" src="http://www.i1323.net/scripts/11.js.php?v=121
由於上面代碼中使用到了HTTP的Expires(到期)屬性用於在用戶端緩衝CSS/JS代碼,所以,如果到期時間設定的太長(比如2020 年),當你在伺服器端修改了JS/CSS代碼時,用戶端可能不會立即生效。解決辦法是:在php檔案後面添加一個隨機參數,如上面例子中的v=121,當下次修改了檔案時,記得相應修改此隨機參數即可。
方法(2)
可以使用第三方架構如 Mint 解壓到根目錄就行 使用很方便 例如下:
<SCRIPT src="min/f=/js/jquery1.8.js,/js/global.js,/js/index.js,/js/jquery-powerFloat.js,/js/util.js," type=text/javascript></SCRIPT> 一次載入所有所需的JS
二、懶載入
例如使用瀑布流,按要求最佳化首次載入的資源特別是圖片比較多的時候。使用AJAX載入會較多。
三、資源大小最佳化
JS、CSS、圖片 等資源 盡量將大小壓縮至最小
JS、CSS 推薦工具yuicompressor