代码优化
通常要求程序员要有好的编程习惯,尽量减少冗余代码的出现,目前也有好多工具能够完成这项功能,对于一般的html文件,用于减少冗余的减肥工具很多,而对于PHP程序来说这样的工具就不太多了,但是Zend Technologies的Zend Optimizer是一款非常好的代码优化工具,可以免费从Zend Technologies的网站上获得。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 公式サイトの指示によれば、このパラメーターはできません"zlib.output_compression = on" パラメーターを同時に使用すると、PHP が正しく動作せず、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
系统会在/path/to/apache/ etc/httpd.conf中自动激活该模块,如果下载的是.so文件则要将该文件拷贝到相应的目录下,然后在httpd.conf文件中添加LoadModule gzip_module libexec/ mod_gzip.so,使模块生效。需要注意两点,第一,要想使用.so文件,Apache必须包含了mod_so模块(可以通过httpd -l命令来查询该模块是否生效);第二,如果下载的是.so文件,它是与Apache的版本有关的,要注意下载的版本与自己使用的Apache是否一致,如果是.c文件就没有这个问题。模块生效后还要对Apache进行相应的配置,需要在httpd.conf文件中加入一些参数:
mod_gzip_on Yes(模块是否生效)
mod_gzip_minimum_file_size 1002(最小压缩文件大小)
mod_gzip_maximum_file_size 0(最大压缩文件大小,0表示没有限制)
mod_gzip_maximum_inmem_size 60000(最大可占用内存)
mod_gzip_item_include file "..gif102SINA>DOUBLE_QUOTATION (以gif结尾的文件要压缩传送)
mod_gzip_item_include file ".txt102SINA>DOUBLE_QUOTATION
mod_gzip_item_include file ".html102SINA>DOUBLE_QUOTATION
mod_gzip_item_exclude file ".css102SINA>DOUBLE_QUOTATION
使用了压缩模块后,当用户访问站点时会在日志文件中记录相应的信息,比如“mod_gzip :OK In:file_length Out:gzipfile_length”,表示该页面传输中使用了gzip功能,输入文件、输出文件大小都有说明。
文件缓存
このメソッドは通常、PHP、PERL などに使用されます。CGI プログラムに関して言えば、これらのプログラムには共通の特徴があるため、ユーザーのリクエストを受け取った後、すぐに結果がユーザーに返されるのではなく、実行結果がクライアントによって解釈され実行された後にクライアントに返されます。この期間中、通常はデータベースへのアクセスが行われ、実行結果がクライアントに返されます。これにより問題が発生します。2 人のユーザーが同じページにアクセスすると、システムは 2 つのリクエストを別々に処理しますが、実際には 2 つの操作がまったく同じである可能性があり、目に見えないほどシステムの負荷が増加します。したがって、通常の解決策は、ユーザーが初めてページにアクセスしたときにシステム メモリにスペースを空け、ユーザーが再度そのページにアクセスしたときに、システムがそのページを直接削除することです。再解釈や実行を行わずにメモリから呼び出されるこのメモリ空間はキャッシュと呼ばれます。現在、人気のあるキャッシュ管理プログラムは 2 つあり、1 つは FastCGI、もう 1 つは Zend テクノロジー の Zend キャッシュ。 FastCGI は主に Perl、C、C++ およびその他の CGI スクリプト プログラムは、クライアントからのリクエストをキャッシュするためにメモリを効果的に使用するように設計されています。 FastCGI アプリケーション サービス プログラムに送信され、FastCGI がユーザーのリクエストを処理しますその後、結果がユーザーに返されます。一般的CGI程序这时将结束进程自动退出,但是FastCGI进程继续保持,这时它在接到新的用户请求后不必建立新的进程,可以立即处理用户请求,也就是说CGI程序建立进程顺序执行然后退出,而FastCGI程序顺序执行并永远循环。
Zend Cache的管理界面
要想使用FastCGI首先要把FastCGI编译到Apache中,方法非常简单,这里就不说明了,还要在http.conf文件里作设置:
AddHandler fastcgi-script .fcg .fcgi .fpl
Options ExecCGI Indexes Includes
这样FastCGI就可以正常工作了,下面是FastCGI程序员手册中的一段例子程序:
#!fcgi-savvy-perl
use FCGI; # 初始化
# Initialization code
= 0;
# Response loop
while (FCGI::accept >= 0) {
#FastCGI建立循环体
print "Content-type:text/html "; #程序执行
print "<head><title>FastCGI Demo Page (perl)</title></head> ";
print "<h1>FastCGI Demo Page (perl)</h1> ";
print "This is coming from a FastCGI server. <BR> ";
print "Running on <EM>publish152.internal.sina.com.cn</EM> to <EM></EM><BR> ";
++;
print "This is connection number ";
}
FastCGI for Perlなど CGI プログラムは非常に強力ですが、PHP プログラムには無力で、プログラミング中にコンテンツを追加する必要があるため、何らかの人的要因が必要になります。登場する可能性があります。対照的に、Zend Technologies の ZendキャッシュPHP のキャッシュ機能は非常に強力で、ソフトウェアがインストールされている限り、プログラマは他の PHP を作成できます。 プログラムは同じです。キャッシュ機能を実装するために追加のコードは必要ありません。これはシステムのアップグレードに役立ち、非常に便利です。有料のソフトウェアです。它有缓存功能并能通过图形界面对其进行管理,其中:Cache Control页面,可以配置Zend Cache,显示其当前状态,还能启动和停止Zend Cache功能;Scripts页面,Zend Cache的内容,包括每个文件的状态,还可以根据点击次数和缓存占有大小选择文件;Benchmark页面,可以测试Zend Cache的缓存效果,并以图形方式给出显示,它测试的是每秒钟完成PHP请求的次数。
它的安装、验证方法与Zend Optimizer基本相同,这里就不详细说明了,感兴趣的读者可以参考用户手册,它的强大功能和便利的管理方法确实让人心动。
以上是网站提速常见的几种方法,对于不同的网站需要采用不同的手段,所对应的提速方案也不尽相同,但总体上不外乎是以上提到的三招,读者可以根据自己的实际情况具体问题具体分析。
注意:考虑到客户端软件的复杂性,因为有些客户端软件可能不支持某些特性,比如,mod_gzip对页面进行压缩,但是如果客户端使用的是Netscape就不行,因为它不能把接收到的压缩页面解压缩,导致页面不能正常显示。