1.proxy_cache的作用是緩存后端服務(wù)器的內(nèi)容屏富,包括靜態(tài)的和動態(tài)累盗。
2.fastcgi_cache的作用是緩存fastcgi生成的內(nèi)容厨姚,很多情況是php生成的動態(tài)的內(nèi)容兢榨。
3.proxy_cache緩存減少了nginx與后端通信的次數(shù),節(jié)省了傳輸時間和后端寬帶室奏。
4.fastcgi_cache緩存減少了nginx與php的通信的次數(shù)火焰,更減輕了php和數(shù)據(jù)庫(mysql)的壓力,這比用memcached之類的緩存要輕松得多窍奋。
附上nginx的httpd 配置
fastcgi_connect_timeout 300;
指定連接到后端FastCGI的超時時間荐健。
fastcgi_send_timeout 300;
向FastCGI傳送請求的超時時間,這個值是指已經(jīng)完成兩次握手后向FastCGI傳送請求的超時時間琳袄。
fastcgi_read_timeout 300;
接收FastCGI應(yīng)答的超時時間江场,這個值是指已經(jīng)完成兩次握手后接收FastCGI應(yīng)答的超時時間。
fastcgi_buffer_size 32k;
指定讀取FastCGI應(yīng)答第一部分需要用多大的緩沖區(qū)窖逗,一般第一部分應(yīng)答不會超過1k址否,由于頁面大小為4k,所以這里設(shè)置為4k碎紊。
fastcgi_buffers 4 32k;
指定本地需要用多少和多大的緩沖區(qū)來緩沖FastCGI的應(yīng)答請求佑附。如果一個PHP腳本所產(chǎn)生的頁面大小為256KB,那么會為其分配4個64KB的緩沖區(qū)來緩存仗考;如果頁面大小大于256KB音同,那么大于256KB的部分會緩存到fastcgi_temp指定的路徑中,但是這并不是好方法秃嗜,因為內(nèi)存中的數(shù)據(jù)處理速度要快于硬盤权均。一般這個值應(yīng)該為站點中PHP腳本所產(chǎn)生的頁面大小的中間值,如果站點大部分腳本所產(chǎn)生的頁面大小為256KB锅锨,那么可以把這個值設(shè)置為“16 16k”叽赊、“4 64k”等。
fastcgi_busy_buffers_size 64k;
默認(rèn)值是fastcgi_buffers的兩倍必搞。
fastcgi_temp_file_write_size 64k;
在寫入fastcgi_temp_path時將用多大的數(shù)據(jù)塊必指,默認(rèn)值是fastcgi_buffers的兩倍。
fastcgi_cache_path /var/logs/nginx/fastcgi_cache_dir levels=1:2 keys_zone=cache_fastcgi:128m inactive=1d max_size=10g;
這個指令為FastCGI緩存指定一個路徑恕洲,目錄結(jié)構(gòu)等級塔橡,關(guān)鍵字區(qū)域存儲時間和非活動刪除時間梅割。以及最大占用空間。
然后在server的location里面調(diào)用谱邪,如下緩存php文件:
location ~ \.php$ {
root /var/www/html/yan_blog;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;fastcgi_cache cache_fastcgi;
#表示開啟FastCGI緩存并為其指定一個名稱炮捧。
fastcgi_cache_valid 200 302 301 1h;
fastcgi_cache_valid any 1m;
#為指定的應(yīng)答代碼指定緩存時間,如上例中將200惦银,302 301應(yīng)答緩存一小時,其他為1分鐘末誓。
fastcgi_cache_min_uses 1;
#設(shè)置鏈接請求幾次就被緩存扯俱。
fastcgi_cache_use_stale error timeout invalid_header http_500;
#定義哪些情況下用過期緩存
fastcgi_cache_key $request_method://$host$request_uri;
#注意一定要加上$request_method作為cache key,否則如果HEAD類型的先請求會導(dǎo)致后面的GET請求返回為空
}
設(shè)置了之后重啟nginx就可以生效了喇澡,這個時候再訪問php的頁面的話迅栅,就會被緩存了,可以查看/var/logs/nginx/fastcgi_cache_dir這個目錄下面是有緩存文件的晴玖。
如果更改了緩存目錄的路徑读存,一定要把緩存的名稱也改掉,后端調(diào)用的名稱也同步改掉呕屎,如果只改掉了緩存目錄让簿,不改緩存名稱的話,緩存的時候還是會緩存到之前的路徑下面去秀睛,但是調(diào)用的時候調(diào)用的是新的路徑尔当,這個時候就會出現(xiàn)找不到的情況
原文標(biāo)題:nginx的fastcgi_cache模塊與proxy_cache模塊緩存區(qū)別
原文地址:http://www.abcde.cn/info/show-26-1515-1.html