a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 學院 > 操作系統 > 正文

Nginx的緩存:proxy_cache和fastcgi_cache

2024-06-28 16:00:17
字體:
來源:轉載
供稿:網友

PRoxy_cache和fastcgi_cache構成了Nginx的緩存,proxy_cache主要用于反向代理時,對后端內容源服務器進行緩存,可能是任何內容,包括靜態的和動態,緩存減少了nginx與后端通信的次數,節省了傳輸時間和后端寬帶;fastcgi_cache主要用于對FastCGI的動態程序進行緩存,很多情況是php生成的動態的內容,fastcgi_cache緩存減少了nginx與php的通信的次數,更減輕了php和數據庫(MySQL)的壓力,這比用memcached之類的緩存要輕松得多。。兩者的功能基本上一樣。

在功能上,Nginx已經具備Squid所擁有的Web緩存加速功能、清除指定URL緩存的功能。而在性能上,Nginx對多核CPU的利用,勝過Squid不少。另外,在反向代理、負載均衡、健康檢查、后端服務器故障轉移、Rewrite重寫、易用性上,Nginx也比Squid強大得多。這使得一臺Nginx可以同時作為“負載均衡服務器”與“Web緩存服務器”來使用。

所以可以根據實際情況結合使用proxy_cache和fastcgi_cache來架構Nginx的負載均衡系統。

FastCGI 的技術原理就要了解何為”短生存期應用程序”,何為”長生存期應用程序”。先從 CGI 技術開刀,以下是 CGI 技術的理論:每次當客戶請求一個 CGI 的時候,Web 服務器就請求操作系統生成一個新的 CGI 進程。當 CGI 滿足要求后,服務器就殺死這個進程。服務器對客戶端的每個請求都要重復這樣的過程。而 FastCGI 技術的理論為:FastCGI 程序一旦產生后,他可以持續工作,足夠滿足客戶的請求直到被明確的終止。如果你希望通過協同處理來提高程序的性能,你可以請求 Web 服務器運行多個 FastCGI應用程序的副本。CGI 就是所謂的短生存期應用程序,FastCGI 就是所謂的長生存期應用程序。由于 FastCGI 程序并不需要不斷的產生新進程,可以大大降低服務器的壓力。并且產生較高的應用效率。很多時候一個頁面由多個數據片斷組成,為了提高頁面速度,要么分別緩存,要么整體緩存(所謂的Page Cache)關于Nginx fastcgi_cache,基礎的可以參看Nginx官方文檔http://wiki.nginx.org/HttpFcgiModule,下面是一個典型的做法是:

fastcgi_temp_path /data/ngx_fcgi_tmp;fastcgi_cache_path /data/ngx_fcgi_cache levels=2:2 keys_zone=ngx_fcgi_cache:512m inactive=1d max_size=40g;fastcgi_cache_valid 200 301 302 1d;fastcgi_cache_use_stale error timeout invalid_header http_500;fastcgi_cache_key http://$host$request_uri;

大概解釋下各個參數的含義:

  fastcgi_temp_path:生成fastcgi_cache臨時文件目錄,fastcgi_cache_path:fastcgi_cache緩存目錄,可以設置目錄哈希層級,比如2:2會生成256*256個字目錄,keys_zone是這個緩存空間的名字,cache是用多少內存(這樣熱門的內容nginx直接放內存,提高訪問速度),inactive表示默認失效時間,max_size表示最多用多少硬盤空間,需要注意的是fastcgi_cache緩存是先寫在fastcgi_temp_path再移到fastcgi_cache_path,所以這兩個目錄最好在同一個分區,從0.8.9之后可以在不同的分區,不過還是建議放同一分區。  fastcgi_cache_valid:定義哪些http頭要緩存,fastcgi_cache_use_stale:定義哪些情況下用過期緩存fastcgi_cache_key:定義fastcgi_cache的key,示例中就以請求的URI作為緩存的key,Nginx會取這個key的md5作為緩存文件,如果設置了緩存哈希目錄,Nginx會從后往前取相應的位數做為目錄。  fastcgi_cache:用哪個緩存空間如何手動清除緩存?有個Nginx的第三方擴展可幫你做到:https://github.com/FRiCKLE/ngx_cache_purge/直接找到緩存文件,然后刪掉就可以;Nginx fastcgi_cache緩存很不錯,但我只想在某些頁面用fastcgi_cache,很簡單,有兩種方法,一是在location中定義fastcgi_cache,這樣只有滿足一定規則的url才會用上cache,其他的就不會了;另外一種方法是在你不需要緩存的頁面上,輸出禁止緩存的頭信息,用ColaPHP的話,直接$this->response->disableBrowserCache(); 具體代碼:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");header("Cache-Control: no-store, no-cache, must-revalidate");header("Cache-Control: post-check=0, pre-check=0", false);header("Pragma: no-cache");

大部分都是Memcache、Xcache、Proxy_Cache,FastCgi Cache很少采用配置方法很簡單1、新建文件夾存放緩存文件mkdir /home/cache/fcgi -p (www的權限)2、修改nginx.conf文件(LNMP一鍵包目錄在/usr/local/nginx/conf/nginx.conf),在http層加入:fastcgi_cache_path /home/cache/fcgi levels=1:2 keys_zone=fcgi:15m inactive=1d max_size=1g;#15m為內存占用 1g為硬盤最大占用空間3、修改位于vhost目錄下的站點文件

		location ~ .*/.(php|php5)?$			{				#try_files $uri =404;				fastcgi_pass  unix:/tmp/php-cgi.sock;				#fastcgi_index index.php;				include fcgi.conf;				#fastcgi_pass   127.0.0.1:9000;				fastcgi_index  index.php;				fastcgi_param  SCRipT_FILENAME  /home/wwwroot/$fastcgi_script_name;  #網站請求的根目錄				include        fastcgi_params;				fastcgi_cache fcgi;				fastcgi_cache_valid 200 302 301 1h;				fastcgi_cache_valid any 1m;				fastcgi_cache_min_uses 1;				fastcgi_cache_use_stale error timeout invalid_header http_500;				fastcgi_cache_key $request_method:$host$request_uri;			}/etc/init.d/nginx restart

5、打開站點,看緩存目錄是否增大

du -sh /home/cache/fcgi

轉自:http://blog.angryfox.com/?p=1930


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 在线成人免费视频 | 99久久99久久 | 亚洲精品乱码8久久久久久日本 | 免费亚洲视频 | 国产欧美精品一区二区色综合朱莉 | 精品亚洲一区二区三区四区五区 | 北条麻妃国产九九九精品小说 | 高清国产一区 | 特级黄一级播放 | 成人免费一区二区三区视频网站 | 国产黑丝在线 | 男女靠逼视频免费观看 | 大香伊在人线免97 | 国产91富婆养生按摩会所 | 精品一区二区三区四区五区 | 成人性生交大片免费看中文带字幕 | 亚洲三级黄 | 亚洲国产视频一区 | 成人a视频 | 国产a区| 久久久久久综合 | 婷婷丁香五 | 久久男女视频 | www.一区二区 | 日韩成人av在线播放 | 男女羞羞视频在线观看免费 | 欧美亚洲一区 | v片网站| 欧美一区二区三区视频 | 欧美精品一区二区三区在线四季 | 国产精品视频男人的天堂 | 国产精品久久久久9999赢消 | 国产精品日产欧美久久久久 | 91在线播| 亚洲福利一区二区 | 亚洲一区欧美一区 | 欧美国产在线视频 | 国产精品对白一区二区三区 | 国产精品一区二区久久精品涩爱 | 亚洲在线免费观看 | 久久久亚洲一区 |