如何正確設置 FastCgi Cache 加速您的 WordPress 網站

Webinoly 支援 Nginx FastCgi Cache 快取方式,不需要安裝任何快取外掛,就可以加速您的 WordPress 網站,FastCgi Cache 生成的內容,可以繞過 PHP 與 MySQL 之間的通信,提高了網站速度。

其機制是將後端 CGI 服務返回的頁面快取起來,後續客戶端的請求時直接返回頁面,省去與後端服務 (PHP、MySQL) 通信及生成頁面的消耗,由於減少了後端請求,性能會比 WordPress 的各種快取外掛高出許多。

啟用 FastCgi Cache 方式

Webinoly 創建新網站時直接啟用 FastCgi Cache:

sudo site domain.com -wp -cache=on

已存在的網站啟用 FastCgi Cache:

sudo site domain.com -cache=on

停用 FastCgi Cache:

sudo site domain.com -cache=off

網站啟用 FastCgi Cache 時,Webinoly 會預設安裝 Nginx Helper 外掛和 Redis Object Cache 這 2 個外掛。

 Nginx Helper plugin

Nginx Helper 外掛

Redis Object Cache 外掛

Nginx Helper 外掛設置

進入 WordPress 網站控制台,一定要啟用 Nginx Helper 外掛,Redis Object Cache 可用可不用。

Nginx Helper 外掛可自動動態更新和清除快取內容,通過這種方式,我們當修改過網站內容時,前台可以顯示最新的內容。

Nginx Helper 外掛設定如下圖:

Nginx Helper 外掛設定

設定請依圖示,最後不要忘記保存設定 (Save All Changes)

保存設定 (Save All Changes) 後,Nginx Settings 會如下圖顯示。

我們還要再設定 Purge Method,請選擇 Delete local server cache files。

Nginx Settings

將 Nginx Helper 外掛的清除快取的方法,配置為「Delete local server cache files」,這非常重要,「Using a GET request to PURGE/url (Default option)」因為它有安全風險的疑慮,請不要選擇它。

設定好之後,再按一次 Save All Changes 保存設定,這 2 次的設定才是完整的設置 Nginx Helper 外掛。

之後,再修改文章或有新回覆後,就會自動的清除網站快取,不會出現 WordPress 前、後台顯示不同的問題,如果需要手動方式清除快取時,請在控制台最上方的 Purge Cache,點取一次。

FastCgi Cache Setup

或者以 SSH 方式執行清除 FastCgi Cache,請執行下列指令:

sudo webinoly -clear-cache=fastcgi
or
sudo webinoly -clear-cache=all

FastCgi Cache 是否有快取命中網頁

登出 WordPress 控制台後,按 F5 刷新您的網頁,然後利用 Chrome F12 來檢查剛剛的網頁,查看 X-Cache 這個標頭是否 FastCgi Cache 有命中 (Hit) 網頁。

Nginx FastCGI Cache Hit

或執行指令檢查網站訊息:

curl -I https://domain.com/

回應:

HTTP/2 200 
server: nginx
date: Sat, 15 Jun 2019 11:12:19 GMT
content-type: text/html; charset=UTF-8
vary: Accept-Encoding
x-cache-status: HIT
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
x-xss-protection: 1; mode=block
strict-transport-security: max-age=31536000
cache-control: public, no-cache
referrer-policy: unsafe-url

結語

常有使用者反應,使用 Nginx FastCgi Cache 模式後,網站的快取常常無法清除,其原因就是在 Nginx Helper 外掛設定上的錯誤造成的。

高流量網站架構的優化原則,其實就一句話「把所有的客戶端訪問請求都儘量往前推」。

簡單的說:能快取在客戶端的電腦,就不要讓他去訪問 CDN,能快取在 CDN 服務端上的,就不要讓 CDN 去訪問源 (靜態服務器),能訪問靜態服務器的,就不要去訪問動態服務器,以此類推。

能不訪問資料庫,就一定不要去訪問資料庫,以加快網站的反應速度。

關於 Nginx FastCgi 快取的文章,之前有寫過兩篇,可以參考。

WordPress 配置 Nginx FastCGI 靜態頁面快取及負載測試

Nginx FastCGI-Cache vs WP Rocket 緩存比較

關於 Webinoly LEMP 設置的問題,有不清楚的地方,歡迎提出討論。

Photo by Spencer Davis on Unsplash

預設圖片
yungke
視咖啡如命的癮君子,沒有厲害的技術,只會小打小鬧的電腦工程師。WooWP Managed WordPress hosting 與 Kinsta 合作,推出最優惠、穩定的 GCP 主機方案,了解更多>>
文章: 153

2 則留言

    • 我沒有去翻譯他,後台設置為英文使用。
      如要去翻譯他,他的翻譯文件放在 /wp-content/themes/simplicity2/languages

發佈留言