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

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

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

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

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

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

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

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

使用方法:瀏覽器

在網頁發佈目錄的.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的,不過咱們還有辦法:網絡

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

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

  1. <?php if(extension_loaded(zlib)){ob_start(ob_gzhandler);}?>

而且在結尾加上

  1. <?php if(extension_loaded(zlib)){ob_end_flush();}?>

複製時還原爲正規的PHP格式。

對於js文件,則在原來js文件的首行加上

  1. <?php if(extension_loaded(zlib)){ob_start(ob_gzhandler);} header(Content-Type: text/javascript); ?>

末尾一樣加上

  1. <?php if(extension_loaded(zlib)){ob_end_flush();}?>

而後存爲abc.js.PHP這樣的文件,而且修改指向這個全部html,PHP等文件。

  1. <script type=text/javascript src=abc.jscharset=utf-8></script>

  1. <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

相關文章
相關標籤/搜索