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

如何正確設定 FastCgi Cache

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

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

啟用 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 外掛

Cleans nginx's fastcgi/proxy cache or redis-cache whenever a post is edited/published. Also does a few more things.

Redis Object Cache 外掛

A persistent object cache backend powered by Redis. Supports Predis, PhpRedis, HHVM, replication, clustering and WP-CLI.

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 靜態頁面快取及負載測試

WordPress 的主要性能瓶頸是由處理 PHP 引起的,因此為提高我們網站的性能,我們需要減少 Web 主機處理 PHP 和數據庫的數量。這個就是為什麼要在 WordPress 加入頁面快取的目的。

Nginx FastCGI-Cache vs WP Rocket 緩存比較

在 WordPress 優化的領域中,「速度」一直是使用者很重視的要素,網路的世界,速度才是王道。讀者體驗的感受,能不能在你的網站多停留一點時間,網站開啟網頁速度快不快,這可能比甚麼都重要。

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

//Featured Photo 攝影師:Pexels,連結:Pixabay

Follow me

yungke

視咖啡如命的癮君子,沒有厲害的技術,只會小打小鬧的電腦工程師,其實是個打雜小弟,修電燈、水管也都是我的工作。
yungke
Follow me
Advertisement

Follow Me

查看本文
喜愛 Like 點擊數!!

Comments

  1. Michael says:

    Hello
    我有用你這風格
    但都日文,有些我可以翻,但有些不知到那改,能否教學下
    謝謝

    • yungke says:

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

Back to top