Text/Li Kuncheng
インターネットの普及に伴い、Web サイトはあらゆる業界に浸透しましたが、現在の専用線のコストは多くの企業や個人にとって負担できないため、多くの Web サイトでは共有帯域幅が推奨されるソリューションとなっています。 。コストは削減されましたが、すぐに新しい問題が発生しました。つまり、共有帯域幅の速度が非常に遅く、場合によっては耐えられないほどでした。ウェブサイトをどのように高速化するかが人々の関心事となっています。著者は、読者の役に立つことを願って、個人的な実践に基づいたいくつかのソフト手法の実践的な応用について話します。
著者は Linux オペレーティング システムと Apache PHP ウェブサイト構築手法を使用しています。
コードの最適化
プログラマーは通常、適切なプログラミング習慣を身につけ、冗長コードの発生を最小限に抑える必要があります。現在、この機能を実行できるツールが多数あります。一般的な HTML ファイルの冗長性を削減する軽量化ツールは数多くありますが、PHP プログラム用のこのようなツールはあまりありません。ただし、Zend Technologies の Zend Optimizer は、Zend Technologies の Web サイトから無料でダウンロードできる非常に優れたコード最適化ツールです。 。 Zend Optimizer の使用も非常に簡単で、ダウンロードした ZendOptimizer-1[1].0.0-PHP_4.0.4-Linux_glibc21-i386.tar.gz ファイルを解凍し、ZendOptimizer.so ファイルを /usr/local /Zend/ にコピーするだけです。 lib ディレクトリに移動し、php.ini ファイルを変更し、最後に次の行を追加します。
表示は、Zend Optimizer が正常に動作していることを示します
zend_optimizer.optimization_level= 15
zend_extension="/usr/local/ Zend/lib/ ZendOptimizer.so"
設定が完了したら、Apache サーバーを再起動し、PHP プログラムを作成します。
Phpinfo();
?>
一般に、Zend Optimizer はシステムの効率を 30% ~ 40% 向上させることができます。が最も懸念されています。
圧縮ページ
HTTP1.1 プロトコルは、ページ圧縮送信をサポートしています。これは、サーバーがページを圧縮してクライアントに送信し、その後、サーバー上でページを解凍することを意味します。クライアント その後、それを顧客に表示します。サーバー側で送信する方法は 2 つあります。1 つは、送信するときに、圧縮されたページをクライアントに送信するだけです。これは、静的な Web ページが多い場合に適しています。ほとんどのサイトでは、動的ページの数が多くなりますが、クライアントに送信されるページの多くは実際には存在しないため、クライアントからのユーザー要求を受信したときにサーバーによって動的に生成されるため、この方法は適していません。生成された動的ページは、圧縮してクライアントに送信する前に、まず生成する必要があります。 PHP バージョン 4.0.4 以降では、php.ini ファイルに設定行「output_handler = ob_gzhandler」を追加できるため、動的に生成された各ページはクライアントに送信される前に圧縮されますが、 PHP公式サイト, このパラメータは、PHPの動作異常を引き起こしやすいため、「zlib.output_compression = on」パラメータと同時に使用することはできません。また、PHPプログラムの動的に生成されたページのみを圧縮できます。多数の静的ページ、特に画像ファイルでは機能しません。ただし、mod_gzip モジュールは、静的ページをクライアントに送信する前に圧縮する機能を Apahe に提供します。その圧縮率は最大 10 に達し、通常の状況では 3 に達する可能性があります。これは、Web サイトの送信速度が低下することを意味します。 3倍以上に増加しました。 mod_gzip 関数を使用するには、まず mod_gzip.c または mod_gzip.so ファイルをダウンロードする必要があります。.c ファイルをダウンロードする場合は、使用する前に Apache が提供するツールを使用して .so ファイルに変換する必要があります。方法は、次のコマンドを実行します:
-i -a mod_gzio.c
cp mod_foo.so/path/to/apache/libexec/mod_gzip.so
chmod 755/path/to/apache/libexec/ mod_foo.so
.so ファイルをダウンロードする場合、システムはこのモジュールを /path/to/apache/etc/httpd.conf で自動的にアクティブ化します。ファイルを対応するディレクトリに追加し、httpd.conf ファイルに LoadModule gzip_module libexec/mod_gzip.so を追加してモジュールを有効にします。 2 つの点に注意する必要があります。まず、.so ファイルを使用する場合は、Apache に mod_so モジュールを含める必要があります (httpd -l コマンドを使用して、モジュールが有効かどうかを確認できます)。 Apache のバージョンについては、ダウンロードしたバージョンが使用している Apache と一致しているかどうかに注意してください。.c ファイルであれば、そのような問題はありません。モジュールが有効になったら、それに応じて Apache を設定する必要があります。 httpd.conf ファイルにいくつかのパラメータを追加する必要があります。
mod_gzip_on はい (モジュールが有効になるかどうか)
mod_gzip_minimum_file_size 1002 (最小圧縮ファイル サイズ)
mod_gzip_maximum_file_size 0 (最大圧縮ファイル サイズ、0 は制限なしを意味します)
mod_gzip_maximum_inmem_size 60000 (最大利用可能なメモリ)
mod_gzip_item_include ファイル "..gif102SINA> ; DOUBLE_QUOTATION (gif 最後のファイルは圧縮して送信します)
mod_gzip_item_include ファイル ".txt102SINA>DOUBLE_QUOTATION
mod_gzip_item_include ファイル ".html102SINA>
mod _gzip_item_exclude ファイル " .css102SINA>DOUBLE_QUOTATION
圧縮モジュールを使用した後、ユーザーがサイトにアクセスすると、「mod_gzip:OK In:file_length Out:gzipfile_length」などの対応する情報がログ ファイルに記録されます。ページ送信にgzip関数が使用されていること、入力ファイル、出力ファイルのサイズを示します。
ファイル キャッシュ
この方法は通常、PHP や PERL などの CGI プログラムで使用されます。これらのプログラムには、ユーザーのリクエストを受け取るという共通の機能があるためです。実行結果はすぐにユーザーに返されますが、実行結果はインタプリタによる解釈と実行後にクライアントに返されます。このプロセスには通常、データベースへのアクセスが含まれます。これにより問題が発生します。2 人のユーザーが同じページにアクセスすると、システムは 2 つのリクエストを別々に処理しますが、実際には 2 つの操作がまったく同じである可能性があり、目に見えないほどシステムの負荷が増加します。したがって、通常の解決策は、ユーザーが初めてページにアクセスしたときにシステム メモリにスペースを空け、ユーザーが再度そのページにアクセスしたときに、システムがそのページを直接削除することです。再解釈や実行を行わずにメモリから呼び出されるこのメモリ空間はキャッシュと呼ばれます。現在、一般的なキャッシュ管理プログラムは 2 つあり、1 つは FastCGI で、もう 1 つは Zend Technologies の Zend Cache です。 FastCGI は主に Perl、C、C などの CGI スクリプト プログラム用に設計されています。クライアントからのリクエストは FastCGI アプリケーション サービス プログラムに送信され、その結果がキャッシュに使用されます。ユーザー。一般的な CGI プログラムはこの時点でプロセスを終了して自動的に終了しますが、FastCGI プロセスはこの時点で維持され続け、新しいユーザー要求を受信した後に新しいプロセスを作成する必要はなく、ユーザー要求を処理できます。言い換えれば、CGI プログラムはプロセスを確立して順番に実行し、その後終了しますが、FastCGI プログラムは順番に実行され、永久にループします。
Zend Cache 管理インターフェイス
FastCGI を使用したい場合は、まず FastCGI を Apache にコンパイルする必要があります。方法は非常に簡単なので説明しません。 http.conf ファイルで設定を行うには:
AddHandler fastcgi-script .fcg .fcgi .fpl
Options ExecCGI Indexes includes
このようにして、FastCGI は次のことができます。以下は FastCGI Programmer's Manual のプログラム例です:
#!fcgi-savvy-perl
#Initialization
#Initialization code
= 0;
# 応答ループ
while (FCGI::accept >= 0) {
#FastCGI はループ本体を作成します
print "Content -type:text/html “; h1>FastCGI デモ ページ (perl)</h1> ";
print "これは FastCGI サーバーからのものです。
";
print "publish152.internal.sina.com.cn から
で実行中 ";
;
print "これは接続番号です ";
}
FastCGI は Perl などの CGI プログラムに対しては非常に強力ですが、PHP プログラムに対してはまったく無力であり、プログラミング中にコンテンツを追加する必要があります。機能するには人的要因が必要です。対照的に、Zend Technologies の Zend Cache は、PHP 用の非常に強力なキャッシュ機能を備えており、ソフトウェアがインストールされている限り、プログラマはコードを追加することなく他の PHP プログラムを作成するのと同じようにキャッシュ機能を実装でき、これはシステムにとって有益です。とても便利です。有料のソフトウェアです。キャッシュ機能があり、次のようなグラフィカル インターフェイスを通じてキャッシュを管理できます。 Zend Cache の設定、現在のステータスの表示、Zend Cache 機能の開始と停止を行うことができる [Cache Control] ページ、Zend Cache のコンテンツなど。ファイルのステータスは、クリック数とキャッシュ サイズに基づいて選択することもできます。ベンチマーク ページでは、Zend Cache のキャッシュ効果をテストし、1 秒あたりに完了した PHP リクエストの数をテストできます。
そのインストールと検証方法は基本的に Zend Optimizer の方法と同じです。ここでは詳しく説明しません。興味のある方は、その強力な機能と便利な管理方法を参照してください。
上記は、Web サイトを高速化するための一般的な方法です。Web サイトごとに必要な方法は異なり、対応する高速化プランも異なりますが、一般的には、読者が実行できる上記 3 つのトリックにすぎません。実際の状況に基づいて特定の問題を分析します。
注: 一部のクライアント ソフトウェアは特定の機能をサポートしていない可能性があるため、クライアント ソフトウェアの複雑さを考慮してください。たとえば、mod_gzip はページを圧縮しますが、クライアントが Netscape を使用している場合は、受信したデータが原因で機能しません。圧縮されたページは解凍できないため、ページが正常に表示されません。