首頁  >  文章  >  後端開發  >  htaccess PHP+htaccess實作全站靜態HTML檔GZIP壓縮傳輸一

htaccess PHP+htaccess實作全站靜態HTML檔GZIP壓縮傳輸一

WBOY
WBOY原創
2016-07-29 08:36:22972瀏覽

apache的強大終於超出了我的想像,僅僅蜻蜓點水般觸及了一點php皮毛,這點皮毛就在我原有的知識庫基礎上爆炸開來,好像PN結的“雪崩擊穿”一樣,讓我想到了多種技術結合無限的應用前景。
由於九州未來的伺服器限制流量,減少流量負載也就能減少金錢支出。
如何減少流量,最方便的辦法就是用Gzip壓縮,這個apache的gzip壓縮是靠一個叫做zlib的類庫和gzip的模組(mod_gzip.c)完成的,這玩意專門有一群牛人研究,因為gzip本身就大名鼎鼎的,並且具有高壓縮率開源的壓縮原理,所以我們的開源apache才會採用這種開源的壓縮技術。
恩,這個.htaccess也是apache的一個牛比東西,太強大了,也是根據你的apache安裝了什麼模組而決定你這個文件裡面可以寫什麼東西,比如你安裝了URL重寫模組(Module mod_rewrite.c)的話你就可以寫一些URL重寫程式碼來實現你的檔案重寫。
知識普及完畢。 。 。 。
進入正題。
如何讓自己的全站的真實的靜態的html文件,變成gzip傳輸的呢?
為了理解方便,我寫了一個簡單的php程式給大家。
首先我們建立一個採用gzip壓縮演算法的l.php,在該檔案中讀入xxx.html並顯示出來,然後再在.htaccess裡面重寫xxx.html到1.php就可以了。簡單吧。由於我們的伺服器認為.htaccess的優先權最高,所以存取xxx.html的時候沒有存取到這個靜態文件,反而存取到了1.php.
下面是我的程式碼:(讀入index2.html,然後重寫之)
.htaccess:

複製程式碼 程式碼如下:


# 將 RewriteEngine RewriteEngine On 
RewriteBase / 
RewriteRule index2.html l.php?fn=index2.html 

1.php

1.php 🎜> 程式碼如下:


   $phpver = phpversion(); 
   $useragent = (isset($_SERVER["HTTP_USER_AGENT"]) ) ? $_SERVER["HTTP_USER_AGENT"] : $HTTP_USER_AGENT; 
   if ( $phpver >= '4.0.4pl1' && ( strstr($useragent,'相容') || strstr($useragent,'Gecko') ) ) || strstr($useragent,'Gecko') ) ) || str. extension_loaded( ' zlib') ) 
       { 
           ob_start('ob_gzhandler'); 
       } 
   } 
   else if ( $phpver > '4.0'  TP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip') ) 
       {
           if ( extension_loaded('zlib') ) 
        ip_compress = TRUE; 
               ob_start(); 
               ob_implicit_flush(0); 
               header('內容編碼:gzip'); 
           } 
       } 
   } 
? /'.'./httpdocs/' .$_REQUEST['fn']; 
echo READ_FILE_CONTENTS($rfile); 
函數 READ_FILE_CONTENTS($file) 

   if(!function_exists("file_get_contents"))return file_get_contents($file); 
   $ifile = fopen($file,"r"); 
   $contents = false; 
   if($ifile) while (!feof($ifile)) $contents .= fgets($ifile); 
   fclose($ifile); 
   回傳$內容; 

? > 
// 依照需要壓縮緩衝輸出並傳送至瀏覽器
if ($do_gzip_compress)
   // 
   // 從php.net 借用! 
   ob_end_clean(); 
   $gzip_size = strlen($gzip_contents); 
   $gzip_crc = crc32($gzip_contents); 
   $gzip_contents = gzcompress($gzip_contents, 9); 
   $gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4); 
   echo 「x1fx8bx08x00x00x00x00x00」; 
   echo $gzip_contents; 
   echo pack('V', $gzip_crc); 
   echo pack('V', $gzip_size); 

退出; 
? > 


實際上這個東西可以用更好的方法解決,就是用這個
RewriteCond %{REQUEST_FILENAME} 🎜>RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule 。 /xxx/xxx.php [L]
但是我還沒研究出來怎麼處理這個%{REQUEST_FILENAME},我還望高手教。
以上就介紹了htaccess PHP+htaccess實作全站靜態HTML檔案GZIP壓縮傳輸一,包含了htaccess方面的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn