緩存機制
Nginx提供了基于代理(proxy)和基于fastcgi的兩種緩存方式,兩者指令集十分相似,使用上差別不大。由于本站博客采用Nginx+PHP-FPM架構,故而使用基于fastcgi的緩存,即fastcgi cache。
配置
fastcgi cache的機制是將后端CGI服務返回的頁面緩存起來,后續請求到來時直接返回頁面,省去與后端服務通信及生成頁面的消耗。fastcgi cache與squid、varnish、CDN等原理類似,由于減少了后端請求,原則上性能會比WordPress的各種緩存插件高出許多。
fastcgi cache隸屬于fastcgi模塊,而fastcgi模塊又歸屬于http模塊,所以與緩存相關的配置應當都出現在這兩個及下屬配置塊中(主要是http, server和location)。
根據官方文檔,博客站點采用的緩存配置如下:
http { fastcgi_connect_timeout 30s; # 全局設置, fastcgi_cache_path只能出現在http配置塊中 # fastcgi_cache_path設置全局的緩存路徑、文件大小等,可多次出現設置不同的緩存池 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; # 設置使用過期緩存的情形:后端錯誤、超時等 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; # 登錄用戶或發表評論者 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; # 是否跳過緩存 fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; # 后端返回成功的情況下緩存10分鐘 fastcgi_cache_valid 200 10m; # 添加header字段,指示緩存命中狀態(調試使用) add_header X-Cache $upstream_cache_status;}
上述配置做了以下工作:
設置緩存池信息(fastcgi_cache_path);
設置緩存key(fastcgi_cache_key);
過期文件處理(fastcgi_cache_use_stale)
緩存策略(fastcgi_cache_bypass/fastcgi_no_cache)
后端請求成功時緩存時間(fastcgi_cache_valid)
增加了調試信息頭(add_header)
重啟Nginx,然后訪問頁面,查看頁面的header狀態和響應時間。可以看到,請求一次過后(次數可通過fastcgi_cache_min_uses設置),后續請求都從緩存請求(X-Cache值為HIT),速度提升非常明顯。對于管理后臺頁面,x-cache的值為BYPASS,正是我們需要的。
相關文章推薦:
Nginx配置文件nginx.conf的操作步驟
Nginx中的Rewrite偽靜態法則的講解(詳細)
以上就是Nginx配置fastcgi cache的方法介紹的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答
圖片精選