ホームページ  >  記事  >  php教程  >  PHP .htaccess は、GZIP 圧縮とサイト全体への静的 HTML ファイルの送信を実装します (1)

PHP .htaccess は、GZIP 圧縮とサイト全体への静的 HTML ファイルの送信を実装します (1)

WBOY
WBOYオリジナル
2016-06-13 12:33:17917ブラウズ

Apache のパワーはついに私の想像を超えました。PHP の毛皮をトンボのように少し触っただけで、この毛皮は PN 接合の「雪崩現象」のように爆発しました。さまざまなテクノロジーを組み合わせて、無限のアプリケーションの可能性を実現します。

九州の将来のサーバーはトラフィックを制限するため、トラフィック負荷を軽減することで費用の支出も削減できます。
トラフィックを削減する最も便利な方法は、Gzip 圧縮を使用することです。Apache の gzip 圧縮は、zlib と呼ばれるクラス ライブラリと gzip モジュール (mod_gzip.c) によって実現されます。これは、gzip 自体が有名で圧縮率の高いオープンソースの圧縮原理を備えているため、オープンソースの Apache はこのオープンソースの圧縮技術を採用することになります。

この .htaccess も Apache の強力なツールです。たとえば、このファイルに何を書き込めるかは、Apache がインストールしているモジュールによって決まります。 URL 書き換えモジュール (モジュール mod_rewrite.c) がインストールされている場合は、URL 書き換えコードを記述してファイル書き換えを実装できます。

知識の普及が完了しました。 。 。 。

本題に入ります。

サイト全体の実際の静的 HTML ファイルを gzip 送信に変換するにはどうすればよいですか?
理解を容易にするために、誰でも使える簡単な php プログラムを書きました。
まず gzip 圧縮アルゴリズムを使用して l.php を作成し、ファイル内の xxx.html を読み込んで表示し、次に xxx.html を .htaccess 内の 1.php に書き換えます。シンプルにしてください。サーバーでは .htaccess が最も優先されると見なされるため、xxx.html にアクセスすると、この静的ファイルにはアクセスされませんが、1.php にはアクセスされます。

以下は私のコードです: (index2.html を読み取ります)を書き直してください)
.htaccess:

コードをコピーします コードは次のとおりです:




>#
RewriteEngine で RewriteEngine モードになります
RewriteBase /

RewriteRuleindex2.html l.php?fn=index2.html




1.php

コードをコピー

コードは次のとおりです:


$phpver = phpversion(); 

$useragent = (isset($_SERVER["HTTP_USER_AGENT"]) ) ? $_SERVER["HTTP_USER_AGENT"] : $HTTP_USER_AGENT; 

if ( $phpver >= '4.0.4pl1' && ( strstr($useragent,'compatibility') || strstr($useragent,'Gecko') ) )
{
if ( extension_loaded('zlib') )
{
ob_start('ob_gzhandler'); 
}
}
else if ( $phpver > '4.0' )
{
if ( strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip') )
{
if ( extension_loaded('zlib') )
{
$do_gzip_compress = TRUE; 
ob_start(); 
ob_implicit_flush(0); 

header('Content-Encoding: gzip'); 
}
}
}
?> 
$rfile = addslashes(dirname(dirname(__FILE__))).'/'.'./httpdocs/'.$_REQUEST['fn']; 
echo READ_FILE_CONTENTS($rfile); 
function 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); 
$contents を返す; 
}
?> 
// 必要に応じてバッファリングされた出力を圧縮し、ブラウザに送信します
if ( $do_gzip_compress )
{
//
// php.net から借用しました! 
//
$gzip_contents = ob_get_contents(); 
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} !-f
RewriteCond %{ REQUEST_FILENAME} !-d
RewriteRule 。 /xxx/xxx.php [L]


しかし、私たちはこの%{REQUEST_FILENAME}を研究成果で処理することはできません、还望高手赐教。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。