摘要:配置的機(jī)制是將后端服務(wù)返回的頁(yè)面緩存起來(lái),后續(xù)請(qǐng)求到來(lái)時(shí)直接返回頁(yè)面,省去與后端服務(wù)通信及生成頁(yè)面的消耗。隸屬于模塊,而模塊又歸屬于模塊,所以與緩存相關(guān)的配置應(yīng)當(dāng)都出現(xiàn)在這兩個(gè)及下屬配置塊中主要是和。
轉(zhuǎn)載請(qǐng)注明文章出處:https://tlanyan.me/nginx-conf...
在嘗試Ghost中提到過(guò)托管博客的VPS由于內(nèi)存不足導(dǎo)致服務(wù)宕機(jī)。今天意識(shí)到可以通過(guò)Nginx緩存避免請(qǐng)求落到PHP和MySQL端,提升整體性能。此外博客發(fā)布后很少改動(dòng),讀多寫(xiě)少,是使用緩存(或靜態(tài)化)的好場(chǎng)景。
緩存機(jī)制Nginx提供了基于代理(proxy)和基于fastcgi的兩種緩存方式,兩者指令集十分相似,使用上差別不大。由于本站博客采用Nginx+PHP-FPM架構(gòu),故而使用基于fastcgi的緩存,即fastcgi cache。
配置fastcgi cache的機(jī)制是將后端CGI服務(wù)返回的頁(yè)面緩存起來(lái),后續(xù)請(qǐng)求到來(lái)時(shí)直接返回頁(yè)面,省去與后端服務(wù)通信及生成頁(yè)面的消耗。fastcgi cache與squid、varnish、CDN等原理類(lèi)似,由于減少了后端請(qǐng)求,原則上性能會(huì)比WordPress的各種緩存插件高出許多。
fastcgi cache隸屬于fastcgi模塊,而fastcgi模塊又歸屬于http模塊,所以與緩存相關(guān)的配置應(yīng)當(dāng)都出現(xiàn)在這兩個(gè)及下屬配置塊中(主要是http, server和location)。
根據(jù)官方文檔,博客站點(diǎn)采用的緩存配置如下:
http { ... fastcgi_connect_timeout 30s; # 全局設(shè)置, fastcgi_cache_path只能出現(xiàn)在http配置塊中 # fastcgi_cache_path設(shè)置全局的緩存路徑、文件大小等,可多次出現(xiàn)設(shè)置不同的緩存池 fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:10m inactive=10m max_size=500m; fastcgi_cache_key $scheme$request_method$host$request_uri; # 設(shè)置使用過(guò)期緩存的情形:后端錯(cuò)誤、超時(shí)等 fastcgi_cache_use_stale error timeout invalid_header http_500 http_503; ... server { ... # 緩存策略指示變量 set $skip_cache 0; # 緩存策略 if ($query_string != "") { set $skip_cache 1; } if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|sitemap(_index)?.xml") { set $skip_cache 1; } # 登錄用戶(hù)或發(fā)表評(píng)論者 if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $skip_cache 1; } location ~ .php$ { ... # 使用的keyzone,這里使用http中定義的WORDPRESS fastcgi_cache WORDPRESS; # 是否跳過(guò)緩存 fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; # 后端返回成功的情況下緩存10分鐘 fastcgi_cache_valid 200 10m; # 添加header字段,指示緩存命中狀態(tài)(調(diào)試使用) add_header X-Cache $upstream_cache_status; } } }
上述配置做了以下工作:
設(shè)置緩存池信息(fastcgi_cache_path);
設(shè)置緩存key(fastcgi_cache_key);
過(guò)期文件處理(fastcgi_cache_use_stale)
緩存策略(fastcgi_cache_bypass/fastcgi_no_cache)
后端請(qǐng)求成功時(shí)緩存時(shí)間(fastcgi_cache_valid)
增加了調(diào)試信息頭(add_header)
重啟Nginx,然后訪問(wèn)頁(yè)面,查看頁(yè)面的header狀態(tài)和響應(yīng)時(shí)間。可以看到,請(qǐng)求一次過(guò)后(次數(shù)可通過(guò)fastcgi_cache_min_uses設(shè)置),后續(xù)請(qǐng)求都從緩存請(qǐng)求(X-Cache值為HIT),速度提升非常明顯。對(duì)于管理后臺(tái)頁(yè)面,x-cache的值為BYPASS,正是我們需要的。
其他開(kāi)源版的Nginx不能自動(dòng)清除緩存,當(dāng)文章變動(dòng)或者有新評(píng)論時(shí)不能立即更新頁(yè)面。要達(dá)到此目的,可使用商業(yè)版Nginx或者通過(guò)開(kāi)源插件解決,詳情查看此文。
參考http://nginx.org/en/docs/http...
https://www.mf8.biz/wordpress...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/40062.html
摘要:指令中的參數(shù)時(shí)間內(nèi)文件的最少使用次數(shù),如果超過(guò)這個(gè)數(shù)字,文件描述符一直是在緩存中打開(kāi)的,如上例,如果有一個(gè)文件在時(shí)間內(nèi)一次沒(méi)被使用,它將被移除。 一、這里的優(yōu)化主要是指對(duì)nginx的配置優(yōu)化,一般來(lái)說(shuō)nginx配置文件中對(duì)優(yōu)化比較有作用的主要有以下幾項(xiàng): nginx進(jìn)程數(shù),建議按照cpu數(shù)目來(lái)指定,一般跟cpu核數(shù)相同或?yàn)樗谋稊?shù)。 worker_processes 8; 為每...
摘要:服務(wù)器市場(chǎng)份額。子進(jìn)程負(fù)責(zé)創(chuàng)建由指令設(shè)置的服務(wù)器線程,同時(shí)還負(fù)責(zé)監(jiān)聽(tīng)接收到的請(qǐng)求,并將請(qǐng)求分發(fā)給處理線程。在版本引入了模塊,這個(gè)模塊基于模塊創(chuàng)建的,并加入了獨(dú)立的監(jiān)聽(tīng)線程來(lái)管理請(qǐng)求處理完成后的休眠的連接。基于事件的服務(wù)器完勝。 譯文首發(fā)于 Apache 與 Nginx 性能對(duì)比:Web 服務(wù)器優(yōu)化技術(shù),轉(zhuǎn)載請(qǐng)注明出處。 多年前 Apache 基金會(huì) Web 服務(wù)器 簡(jiǎn)稱(chēng)「Apache」...
摘要:服務(wù)器市場(chǎng)份額。子進(jìn)程負(fù)責(zé)創(chuàng)建由指令設(shè)置的服務(wù)器線程,同時(shí)還負(fù)責(zé)監(jiān)聽(tīng)接收到的請(qǐng)求,并將請(qǐng)求分發(fā)給處理線程。在版本引入了模塊,這個(gè)模塊基于模塊創(chuàng)建的,并加入了獨(dú)立的監(jiān)聽(tīng)線程來(lái)管理請(qǐng)求處理完成后的休眠的連接。基于事件的服務(wù)器完勝。 譯文首發(fā)于 Apache 與 Nginx 性能對(duì)比:Web 服務(wù)器優(yōu)化技術(shù),轉(zhuǎn)載請(qǐng)注明出處。 多年前 Apache 基金會(huì) Web 服務(wù)器 簡(jiǎn)稱(chēng)「Apache」...
摘要:反向代理模塊何為反向代理接收客戶(hù)端請(qǐng)求,并把請(qǐng)求交給后端服務(wù)器處理,后端服務(wù)器處理完成后,響應(yīng)通過(guò)反向代理服務(wù)器返回給客戶(hù)端。作為反向代理服務(wù)器經(jīng)常要配置一組服務(wù)器,以實(shí)現(xiàn)負(fù)載均衡。 1、nginx反向代理模塊 何為反向代理?接收客戶(hù)端請(qǐng)求,并把請(qǐng)求交給后端服務(wù)器處理,后端服務(wù)器處理完成后,響應(yīng)通過(guò)反向代理服務(wù)器返回給客戶(hù)端。反向代理可實(shí)現(xiàn)局域網(wǎng)中的服務(wù)器可被公網(wǎng)中的客戶(hù)端訪問(wèn),也可實(shí)...
閱讀 635·2021-10-27 14:15
閱讀 1162·2021-10-15 09:42
閱讀 2741·2019-08-30 15:53
閱讀 1280·2019-08-23 17:02
閱讀 2955·2019-08-23 16:23
閱讀 3171·2019-08-23 15:57
閱讀 3457·2019-08-23 14:39
閱讀 512·2019-08-23 14:35