程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 壓縮你的PHP、JS、CSS等文本類型代碼

壓縮你的PHP、JS、CSS等文本類型代碼

編輯:關於PHP編程

眾所周知,減小代碼在傳輸中的大小,就能提高頁面的傳輸速度,打開網頁也就快 了,這是基於帶寬瓶頸的理論,當然服務器速度受到其他很多因素的影響, 有PHP代碼執行速度,數據庫訪問速度,磁盤讀寫IO速度等,無論怎樣,帶寬影響是非常大,而受中國電信抑或是中國網通還有其他的一些電信公司的制約,在 服務器網絡帶寬並不很充裕的條件下,壓縮代碼傳輸將會大大節省帶寬!

本文講述通過使用Gzip壓縮方式自動壓縮相應的代碼,在訪問者浏覽器端會自動還原成代碼以便浏覽器執行,至於編寫代碼時的良好風格節省空間的方法不在本文之列。

GZIP 最早由Jean-loup Gailly和Mark Adler創建,用於UNIX系統的文件壓縮。我們在 LINUX中經常會用到後綴為.gz的文件,它們就是GZIP格式的。現今已經成為Internet 上使用非常普遍的一種數據壓縮格式,或者說一種文件格式。HTTP協議上的GZIP編碼是一種用來改進WEB應用程序性能的技術。大流量的WEB站點常常 使用GZIP壓縮技術來讓用戶感受更快的速度。

首先測試一下你的網站各個頁面是否采用了Gzip壓縮,這裡有個測試工具

目前,有兩種主流方法實現Gzip壓縮。
一、mod_deflate模塊

mod_deflate 模塊提供了DEFLATE輸出過濾器,允許服務器在將輸出內容發送到客戶端以前進行壓縮(應該也是采用gzip數據格式壓縮,deflate是一種壓縮算 法)以節約帶寬。Apache 1.3.x時代使用mod_gzip模塊來實現,Apache2已經內置了mod_deflate模塊。

這種方法要求安裝了Apache的http服務器軟件,並且加載了deflate模塊。

使用方法:

在網頁發布目錄的.htaccess文件中加入:

  1. <ifmodule mod_deflate.c>
  2. AddOutputFilter DEFLATE html htm xml php js css
  3. </ifmodule>

這樣就會使得Apache在發布html,xml,php,js,css這樣的文件時會采用Gzip方式傳輸數據,這個方法簡單,一勞永逸,但一般使用的虛擬主機並沒有安裝deflate模塊,也不一定是Apache的,不過我們還有辦法:

二、ob_gzhandler函數
主機要求:支持PHP,PHP版本在4.0.4以上,安裝有zlib庫

對於PHP文件傳輸中壓縮,只需在原來的 PHP 文件首行加上


 
<?php if(extension_loaded(‘zlib‘)){ob_start(‘ob_gzhandler‘);}?>
並且在結尾加上
 
<?php if(extension_loaded(‘zlib‘)){ob_end_flush();}?>
復制時還原為正規的PHP格式。
 
對於js文件,則在原來js文件的首行加上
 
<?php if(extension_loaded(‘zlib‘)){ob_start(‘ob_gzhandler‘);} header(“Content-Type: text/javascript“); ?>
末尾同樣加上
 
<?php if(extension_loaded(‘zlib‘)){ob_end_flush();}?>
然後存為abc.js.PHP這樣的文件,並且修改指向這個所有html,PHP等文件。
 

 
<script type=“text/javascript“ src=“abc.js“ charset=“utf-8“></script>

 
<script type=“text/javascript“ src=“abc.js.php“ charset=“utf-8“></script>
對於a.html文件就直接改成a.PHP訪問好了,如果要保留原來的URL就 修改.htaccess 偽URL或者建立一個網頁跳轉吧,而其他的CSS等文本也就依此推算出該怎麼改了。壓縮效能說明:jQuery庫源代碼為50k左右,先寫代碼時優化,去除空格組合函數等使其減小至26k,再使用GZIP壓縮至14k!


再附一張其他網站的壓縮效能比較圖,圖中三種方式都是GZIP,只是執行的方法不同而已。
gzip.png

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved