PHP 網站最佳化-小記

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.