提問三步曲: 提問先看教程/FAQ索引(wdcp,wdcp_v3,一鍵包)及搜索,會讓你更快解決問題
1 提供詳細,如系統(tǒng)版本,wdcp版本,軟件版本等及錯誤的詳細信息,貼上論壇或截圖發(fā)論壇
2 做過哪些操作或改動設置等
溫馨提示:信息不詳,很可能會沒人理你!論壇有教程說明的,也可能沒人理!因為,你懂的
[求助] 老大來看下,這個行不行,啟用nginx的fastcgi cache提高網(wǎng)站php訪問速度
啟用nginx的fastcgi cache提高網(wǎng)站php訪問速度
先看下測試數(shù)據(jù):
bin\ab.exe -n 100 -c 5 http://www.9enjoy.com
未使用
Concurrency Level: 5
Time taken for tests: 9.016 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 1696500 bytes
HTML transferred: 1669000 bytes
Requests per second: 11.09 [#/sec] (mean)
Time per request: 450.781 [ms] (mean)
Time per request: 90.156 [ms] (mean, across all concurrent requests)
Transfer rate: 183.76 [Kbytes/sec] received
日志里顯示,頁面執(zhí)行需要0.004s
Concurrency Level: 5
Time taken for tests: 3.203 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 1685400 bytes
HTML transferred: 1669000 bytes
Requests per second: 31.22 [#/sec] (mean)
Time per request: 160.156 [ms] (mean)
Time per request: 32.031 [ms] (mean, across all concurrent requests)
Transfer rate: 513.84 [Kbytes/sec] received
日志里顯示,頁面執(zhí)行時間為0s
提高的很明顯!
配置主要參考:http://www.fuchaoqun.com/2011/01/nginx-fastcgi_cache/
配置參數(shù):
http里:
fastcgi_cache_path /www/php_cache levels=1:2 keys_zone=cache_php:30m inactive=1d max_size=10g;
server里:
location ~ .*\.php?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
#以下是fastcgi_cache的配置
fastcgi_cache cache_php;
fastcgi_cache_valid 200 302 1h;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_cache_key $host$request_uri;
}
fastcgi_cache_path:fastcgi_cache緩存目錄,可以設置目錄層級,比如1:2會生成16*256個字目錄,cache_php是這個緩存空間的名字,cache是用多少內(nèi)存(這樣熱門的內(nèi)容nginx直接放內(nèi)存,提高訪問速度),inactive表示默認失效時間,max_size表示最多用多少硬盤空間。本來還有個fastcgi_temp_path參數(shù),但發(fā)現(xiàn)似乎沒用。
fastcgi_cache_valid:定義哪些http頭要緩存
fastcgi_cache_min_uses:URL經(jīng)過多少次請求將被緩存
fastcgi_cache_use_stale:定義哪些情況下用過期緩存
fastcgi_cache_key:定義fastcgi_cache的key,示例中就以請求的URI作為緩存的key,Nginx會取這個key的md5作為緩存文件,如果設置了緩存哈希目錄,Nginx會從后往前取相應的位數(shù)做為目錄
fastcgi_cache:用哪個緩存空間
指定刪除某一URL的php文件的緩存的PHP程序
大致代碼如下:
$md5 = md5($url);
$cacheFile = '/www/php_cache/' . substr($md5, -1, 1) . '/' . substr($md5, -3, 2) . '/' . $md5;
if (!file_exists($cacheFile)) {
exit('緩存不存在。');
}
if (@unlink($cacheFile)) {
echo '清除緩存成功。';
} else {
echo '清除緩存失敗。';
} |