国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > Wordpress > 正文

利用nginx的fastcgi_cache模塊來做緩存

2024-09-07 00:52:06
字體:
來源:轉載
供稿:網友

nginx不僅有個大家很熟悉的緩存代理后端內容的proxy_cache,還有個被很多人忽視的fastcgi_cache。

proxy_cache的作用是緩存后端服務器的內容,可能是任何內容,包括靜態的和動態.

fastcgi_cache的作用是緩存fastcgi生成的內容,很多情況是php生成的動態的內容.

proxy_cache緩存減少了nginx與后端通信的次數,節省了傳輸時間和后端寬帶.

fastcgi_cache緩存減少了nginx與php的通信的次數,更減輕了php和數據庫(mysql)的壓力,這比用memcached之類的緩存要輕松得多。

但是,緩存也有弊端,比如說評論了之后不能會當時顯示等等,自己取舍,有得必有失.

本著測試的原則,在本站上測試了一下fastcgi_cache這個功能,貌似還不錯,減少數據庫的查詢了,順便優化下fastcgi的參數,的嘿嘿,貼上配置nginx的httpd段里面加入

fastcgi_connect_timeout 300;

指定連接到后端FastCGI的超時時間。

fastcgi_send_timeout 300;

向FastCGI傳送請求的超時時間,這個值是指已經完成兩次握手后向FastCGI傳送請求的超時時間。

fastcgi_read_timeout 300;

接收FastCGI應答的超時時間,這個值是指已經完成兩次握手后接收FastCGI應答的超時時間。

fastcgi_buffer_size 32k;

指定讀取FastCGI應答第一部分需要用多大的緩沖區,一般第一部分應答不會超過1k,由于頁面大小為4k,所以這里設置為4k。

fastcgi_buffers 4 32k;

定本地需要用多少和多大的緩沖區來緩沖FastCGI的應答請求。如果一個PHP腳本所產生的頁面大小為256KB,那么會為其分配4個64KB的緩沖區來緩存;如果頁面大小大于256KB,那么大于256KB的部分會緩存到fastcgi_temp指定的路徑中,但是這并不是好方法,因為內存中的數據處理速度要快于硬盤。一般這個值應該為站點中PHP腳本所產生的頁面大小的中間值,如果站點大部分腳本所產生的頁面大小為256KB,那么可以把這個值設置為“16 16k”、“4 64k”等。

fastcgi_busy_buffers_size 64k;

默認值是fastcgi_buffers的兩倍。

fastcgi_temp_file_write_size 64k;

在寫入fastcgi_temp_path時將用多大的數據塊,默認值是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緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。以及最大占用空間。

然后在server的location里面調用,如下緩存php文件:

  1. location ~ /.php$ { 
  2. root /var/www/html/yan_blog; 
  3. fastcgi_pass 127.0.0.1:9000; 
  4. fastcgi_index index.php; 
  5. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; //Vevb.com 
  6. include fastcgi_params; 
  7. fastcgi_cache cache_fastcgi; 

表示開啟FastCGI緩存并為其指定一個名稱。

fastcgi_cache_valid 200 302 301 1h;

fastcgi_cache_valid any 1m;

為指定的應答代碼指定緩存時間,如上例中將200,302 301應答緩存一小時,其他為1分鐘。

fastcgi_cache_min_uses 1;

設置鏈接請求幾次就被緩存。

fastcgi_cache_use_stale error timeout invalid_header http_500;

定義哪些情況下用過期緩存

fastcgi_cache_key $request_method://$host$request_uri;

注意一定要加上$request_method作為cache key,否則如果HEAD類型的先請求會導致后面的GET請求返回為空

}

設置了之后重啟nginx就可以生效了,這個時候再訪問php的頁面的話,就會被緩存了,可以查看/var/logs/nginx/fastcgi_cache_dir這個目錄下面是有緩存文件的。最后再說明一點,如果更改了緩存目錄的路徑,一定要把緩存的名稱也改掉,后端調用的名稱也同步改掉,如果只改掉了緩存目錄,不改緩存名稱的話,緩存的時候還是會緩存到之前的路徑下面去,但是調用的時候調用的是新的路徑,這個時候就會出現找不到的情況,在日志里面可以看出來,如下:

  1. 2012/04/24 13:55:35 [emerg] 2020#0: cache “cache_one” uses the “/var/logs/nginx/fastcgi_cache_dir” cache path while previously it used the “/var/logs/nginx/proxy_cache_dir” cache path 
  2. 2012/04/24 14:06:30 [emerg] 2020#0: cache “cache_one” uses the “/var/logs/nginx/fastcgi_cache_dir” cache path while previously it used the “/var/logs/nginx/proxy_cache_dir” cache path 
  3. 2012/04/24 14:16:03 [emerg] 2020#0: cache “cache_one” uses the “/var/logs/nginx/fastcgi_cache_dir” cache path while previously it used the “/var/logs/nginx/proxy_cache_dir” cache path 
  4. 2012/04/24 14:25:39 [emerg] 2020#0: cache “cache_fastcgi” uses the “/var/logs/nginx/proxy_cache_dir” cache path while previously it used the “/var/logs/nginx/fastcgi_cache_dir” cache path 

這個問題讓我糾結了好久,最后查看日志才發現沒改緩存名的時候,調用的時候調用的是新路徑,但是緩存的時候緩存到沒改之前的路徑里面去了。郁悶、

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 莆田市| 灵石县| 九寨沟县| 古蔺县| 桃园县| 专栏| 兴隆县| 防城港市| 五莲县| 五峰| 象州县| 奈曼旗| 惠水县| 香港| 西城区| 互助| 象山县| 扬中市| 奎屯市| 胶州市| 炉霍县| 武穴市| 文水县| 新邵县| 信丰县| 皋兰县| 开平市| 邢台县| 获嘉县| 澄江县| 融水| 枣强县| 桃江县| 甘肃省| 永和县| 桦南县| 常山县| 北川| 平罗县| 罗山县| 临夏市|