說到wordpress的緩存,大家想到的肯定是?WP-Super-Cache?的靜態html緩存,以及?memcached?或?redis?動態緩存,插件的緩存效果肯定是有的,但是容易出現各種問題,比如配置很復雜、配置全英文、插件之間的沖突等,所以今天我要教大家一個更高級的緩存:Nginx fastcgi_cache緩存,直接在Nginx層面緩存頁面,還支持緩存偽靜態!效果比起傳統的php緩存好得太多了,因為很多人使用寶塔面板,所以今天的教程是基于寶塔面板的教程。

現在寶塔面板都默認編譯了?Nginx ngx_cache_purge?模塊,所以我們直接跳過安裝方法。
Nginx配置
現在我們開始配置nginx,來到寶塔后臺,在軟件商店找到Nginx,點擊設置按鈕,在配置修改中添加以下內容:
fastcgi_cache_path?/tmp/wpcache?levels=1:2?keys_zone=WORDPRESS:250m?inactive=1d?max_size=1G; fastcgi_temp_path?/tmp/wpcache/temp; fastcgi_cache_key?"$scheme$request_method$host$request_uri"; fastcgi_cache_use_stale?error?timeout?invalid_header?http_500; #忽略一切?nocache?申明,避免不緩存偽靜態等 fastcgi_ignore_headers?Cache-Control?Expires?Set-Cookie;
加好之后截圖如下:

添加全局緩存設置
網站設置
在寶塔后臺的網站列表中,找到你的網站,并且點擊設置按鈕,將以下代碼添加到配置文件中去:
set?$skip_cache?0;
#post?訪問不緩存
if?($request_method?=?POST)?{
??set?$skip_cache?1;
}???
#動態查詢不緩存
if?($query_string?!=?"")?{
??set?$skip_cache?1;
}???
#后臺等特定頁面不緩存(其他需求請自行添加即可)
if?($request_uri?~*?"/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|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;
}
#這里請參考你網站之前的配置,特別是sock的路徑,弄錯了就502了!如果你的網站使用PHP7.4,就寫-74.sock
location?~?[^/]\.php(/|$)
{
????try_files?$uri?=404;
????fastcgi_pass?unix:/tmp/php-cgi-74.sock;
????fastcgi_index?index.php;
????include?fastcgi.conf;??
????add_header?Strict-Transport-Security?"max-age=63072000;?includeSubdomains;?preload";
????#新增的緩存規則
????fastcgi_cache_bypass?$skip_cache;
????fastcgi_no_cache?$skip_cache;
????add_header?X-Cache?"$upstream_cache_status?From?$host";
????fastcgi_cache?WORDPRESS;
????add_header?Cache-Control??max-age=0;
????add_header?Nginx-Cache?"$upstream_cache_status";
????add_header?Last-Modified?$date_gmt;
????add_header?X-Frame-Options?SAMEORIGIN;?#?只允許本站用?frame?來嵌套
????add_header?X-Content-Type-Options?nosniff;?#?禁止嗅探文件類型
????add_header?X-XSS-Protection?"1;?mode=block";?#?XSS?保護
????etag??on;
????fastcgi_cache_valid?200?301?302?1d;
}
#緩存清理配置
location?~?/purge(/.*)?{
??allow?127.0.0.1;
??allow?"服務器外網IP";?#?引號要保留
??deny?all;
??fastcgi_cache_purge?WORDPRESS?"$scheme$request_method$host$1";
}加好之后的截圖如下:

添加好之后,重啟Nginx設置,緩存就加好了,
WordPress清理緩存插件
后臺搜索?Nginx Helper?插件安裝啟用,這個插件是為?wordpress fastcgi_cache緩存?打造的一個插件,十分的好用。
判斷緩存狀態
按?F12?開啟開發者工具,在未登錄的情況下訪問網站首頁,查看文件頭,如果出現?HIT?則是緩存了,BYPASS?則是因設置原因未緩存,MISS?即這個頁面還沒被緩存,新發布或剛被刪除的頁面,首次訪問將出現這個狀態,如圖所示:

測試站環境:美國俄勒岡地區3H3G服務器,使用CDN
結語
教程就寫到這里了,更進一步的個性化設置就靠大家自己摸索了,自從使用這個緩存之后,連百度也會更喜歡你的網站,從而更快地收錄和增加權重哦!

