Linux PHP網站提速三大“軟”招(轉)
Linux PHP網站提速三大“軟”招(轉)[@more@]隨著網路的普及,網站已經滲透到了每個行業,但是由於目前專線費用讓很多企業和個人難以承受,所以共享頻寬成為很多網站的首選方案。費用雖然降低了但是一個新的問題很快就出現了,那就是共享頻寬的網速很慢,有時甚至讓人無法忍受。如何能讓自己的網站快起來,成為人們關心的問題,筆者結合親身實踐來講講軟辦法的一些實際應用,希望能夠對讀者有所幫助。
筆者採用的是Linux作業系統,Apache+PHP的網站構建方法。
程式碼最佳化
通常要求程式設計師要有好的程式設計習慣,儘量減少冗餘程式碼的出現,目前也有好多工具能夠完成這項功能,對於一般的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協議支援頁面壓縮傳送,也就是說伺服器把一個頁面壓縮傳送到客戶端,然後在客戶端將頁面解壓縮再顯示給客戶。在伺服器端有兩種傳輸方式,一種是頁面事先已經壓縮好了,傳送時只要將壓縮頁面傳送到客戶端就行,這種適用於靜態網頁多的情況,但是對於大多數站點,動態頁面比較多,這種方法不太適合,因為很多傳到客戶端的頁面其實是沒有的,是伺服器接到客戶端使用者請求動態產生的,所以就要求每生成一個動態頁面都要在傳到客戶端以前先打包壓縮。從PHP的4.0.4版以後,可以在php.ini檔案中增加一行配置“output_handler = ob_gzhandler”,這樣每個動態生成的頁面在傳送到客戶端之前都會進行壓縮,但是根據PHP官方站點的說明,這個引數不能與“zlib.output_compression = on”引數同時使用,因為容易引起PHP工作不正常,另外它只能壓縮PHP程式的動態生成的頁面,對於大量的靜態頁面尤其是影像檔案就不行了。但是mod_gzip模組為Apahe提供了將靜態頁面在傳給客戶端以前先壓縮的功能,它的壓縮比最大能到10,一般情況下可以到 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程式而言的,因為這些程式有一個共同的特徵就是接到使用者的請求後不是馬上將結果返回給使用者,而是經過直譯器解釋執行後將執行結果返回給客戶,這期間通常都要涉及到資料庫的訪問。這樣就會出現一個問題,當兩個使用者訪問同一個頁面時,系統將分別對兩個請求進行操作,但事實上這兩個操作可能是一模一樣的,這樣無形當中增加了系統的負擔。所以通常的解決辦法是在系統記憶體中開闢出一段空間,當使用者第一次訪問頁面後將執行結果存放在該記憶體中,當有使用者再一次訪問該頁面時,系統就將頁面直接從記憶體中調出而不需要重新解釋執行,這段記憶體空間就叫快取。目前流行的快取管理程式有兩個,一個是FastCGI,另一個是Zend Technologies公司的Zend Cache。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對Perl等CGI程式的功能非常強大,但是它對PHP程式確是無能為力的,而且需要在程式設計時增加內容,也就是說它需要一些人為的因素才能發揮作用。相比之下Zend Technologies公司的Zend Cache針對PHP的快取功能是很強大的,只要安裝了該軟體,程式設計師就像編寫其他PHP程式一樣,不需要增加程式碼,就可以實現快取功能,有利於系統升級,十分方便。它是一個付費軟體。它有快取功能並能透過圖形介面對其進行管理,其中:Cache Control頁面,可以配置Zend Cache,顯示其當前狀態,還能啟動和停止Zend Cache功能;Scripts頁面,Zend Cache的內容,包括每個檔案的狀態,還可以根據點選次數和快取佔有大小選擇檔案;Benchmark頁面,可以測試Zend Cache的快取效果,並以圖形方式給出顯示,它測試的是每秒鐘完成PHP請求的次數。
它的安裝、驗證方法與Zend Optimizer基本相同,這裡就不詳細說明了,感興趣的讀者可以參考使用者手冊,它的強大功能和便利的管理方法確實讓人心動。
以上是網站提速常見的幾種方法,對於不同的網站需要採用不同的手段,所對應的提速方案也不盡相同,但總體上不外乎是以上提到的三招,讀者可以根據自己的實際情況具體問題具體分析。
注意:考慮到客戶端軟體的複雜性,因為有些客戶端軟體可能不支援某些特性,比如,mod_gzip對頁面進行壓縮,但是如果客戶端使用的是Netscape就不行,因為它不能把接收到的壓縮頁面解壓縮,導致頁面不能正常顯示。
筆者採用的是Linux作業系統,Apache+PHP的網站構建方法。
程式碼最佳化
通常要求程式設計師要有好的程式設計習慣,儘量減少冗餘程式碼的出現,目前也有好多工具能夠完成這項功能,對於一般的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協議支援頁面壓縮傳送,也就是說伺服器把一個頁面壓縮傳送到客戶端,然後在客戶端將頁面解壓縮再顯示給客戶。在伺服器端有兩種傳輸方式,一種是頁面事先已經壓縮好了,傳送時只要將壓縮頁面傳送到客戶端就行,這種適用於靜態網頁多的情況,但是對於大多數站點,動態頁面比較多,這種方法不太適合,因為很多傳到客戶端的頁面其實是沒有的,是伺服器接到客戶端使用者請求動態產生的,所以就要求每生成一個動態頁面都要在傳到客戶端以前先打包壓縮。從PHP的4.0.4版以後,可以在php.ini檔案中增加一行配置“output_handler = ob_gzhandler”,這樣每個動態生成的頁面在傳送到客戶端之前都會進行壓縮,但是根據PHP官方站點的說明,這個引數不能與“zlib.output_compression = on”引數同時使用,因為容易引起PHP工作不正常,另外它只能壓縮PHP程式的動態生成的頁面,對於大量的靜態頁面尤其是影像檔案就不行了。但是mod_gzip模組為Apahe提供了將靜態頁面在傳給客戶端以前先壓縮的功能,它的壓縮比最大能到10,一般情況下可以到 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程式而言的,因為這些程式有一個共同的特徵就是接到使用者的請求後不是馬上將結果返回給使用者,而是經過直譯器解釋執行後將執行結果返回給客戶,這期間通常都要涉及到資料庫的訪問。這樣就會出現一個問題,當兩個使用者訪問同一個頁面時,系統將分別對兩個請求進行操作,但事實上這兩個操作可能是一模一樣的,這樣無形當中增加了系統的負擔。所以通常的解決辦法是在系統記憶體中開闢出一段空間,當使用者第一次訪問頁面後將執行結果存放在該記憶體中,當有使用者再一次訪問該頁面時,系統就將頁面直接從記憶體中調出而不需要重新解釋執行,這段記憶體空間就叫快取。目前流行的快取管理程式有兩個,一個是FastCGI,另一個是Zend Technologies公司的Zend Cache。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對Perl等CGI程式的功能非常強大,但是它對PHP程式確是無能為力的,而且需要在程式設計時增加內容,也就是說它需要一些人為的因素才能發揮作用。相比之下Zend Technologies公司的Zend Cache針對PHP的快取功能是很強大的,只要安裝了該軟體,程式設計師就像編寫其他PHP程式一樣,不需要增加程式碼,就可以實現快取功能,有利於系統升級,十分方便。它是一個付費軟體。它有快取功能並能透過圖形介面對其進行管理,其中:Cache Control頁面,可以配置Zend Cache,顯示其當前狀態,還能啟動和停止Zend Cache功能;Scripts頁面,Zend Cache的內容,包括每個檔案的狀態,還可以根據點選次數和快取佔有大小選擇檔案;Benchmark頁面,可以測試Zend Cache的快取效果,並以圖形方式給出顯示,它測試的是每秒鐘完成PHP請求的次數。
它的安裝、驗證方法與Zend Optimizer基本相同,這裡就不詳細說明了,感興趣的讀者可以參考使用者手冊,它的強大功能和便利的管理方法確實讓人心動。
以上是網站提速常見的幾種方法,對於不同的網站需要採用不同的手段,所對應的提速方案也不盡相同,但總體上不外乎是以上提到的三招,讀者可以根據自己的實際情況具體問題具體分析。
注意:考慮到客戶端軟體的複雜性,因為有些客戶端軟體可能不支援某些特性,比如,mod_gzip對頁面進行壓縮,但是如果客戶端使用的是Netscape就不行,因為它不能把接收到的壓縮頁面解壓縮,導致頁面不能正常顯示。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-947223/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PHP應用提速面面觀(轉)PHP
- 為PHP應用提速、提速、再提速!PHP
- 漫談網站優化提速網站優化
- 網站提速-偽靜態(3)網站
- Linux+php+memcache+APC加速PHP網站LinuxPHP網站
- 圖片優化瘦身 給網站提速優化網站
- 深圳招調工網站網站
- 全球6成網站採用Linux平臺 社群助php普及(轉)網站LinuxPHP
- Linux+PHP+MySql網站遷移配置LinuxPHPMySql網站
- 三招提高.NET網站效能網站
- PHP網站警報,多種PHP程式過濾漏洞(轉)PHP網站
- php編寫大型網站問題集 (轉)PHP網站
- PHP與WAP網站!PHP網站
- PHP問題總結:PHP最佳化及高效提速問題小結(轉)PHP
- Linux 常用軟體和服務的配置網站Linux網站
- 網站爬取時出現亂碼-強行轉碼第二招網站
- 教你一招 提高Linux作業系統網速方法(轉)Linux作業系統
- 西安PHP,技術外包,網站製作,網站開發,網站運維PHP網站運維
- 保護企業網站安全,華為雲網站安全解決方案有絕招網站
- php網站的定時事件PHP網站事件
- PHP在大型網站開發PHP網站
- linux命令網站Linux網站
- 破解軟體下載網站有哪些?破解軟體分享網站合集網站
- 舊招新用:afio讓Linux也“Ghost”(轉)Linux
- 基於軟體實現網站負載均衡(1) (轉)網站負載
- Econsultancy:提高購物網站產品頁面轉化率的10大殺招網站
- 四招識賣假點卡網站 五大常見騙術顯形(轉)網站
- 使用eaccelerator加速你的PHP網站PHP網站
- php網站資料庫連線PHP網站資料庫
- php網站admin密碼修改?PHP網站密碼
- linux中限制客戶不能上指定的網站(轉)Linux網站
- 網站後臺地址怎麼修改?php修改網站後臺地址?網站PHP
- 網站設計:600個經典網站... (轉)網站
- Coherence X for Mac,將網站轉換為應用程式軟體Mac網站
- 人人商城PHP網站開啟網頁空白PHP網站網頁
- Mac 軟體下載網站Mac網站
- 研招網崩了?網路崩潰的原因有哪些?怎麼維護網站?網站
- Laravel PHP 框架網站重建技術分析LaravelPHP框架網站