~/blog/cloudways-performance-tuning-varnish-redis-guide.md
網站效能與架構優化 · 2025 / 07 / 15

Cloudways 效能卡關?「伺服器手術刀」:從 Varnish 到 Redis,解鎖你的主機潛能!

Eric — 浪花科技創辦人 / AI 架構師
Eric
浪花科技創辦人 · AI 架構師
Cloudways 效能卡關?「伺服器手術刀」:從 Varnish 到 Redis,解鎖你的主機潛能!
目錄 table-of-contents.md

在我們團隊,Cloudways 幾乎是客戶主機的標準配備之一。為什麼?因為它夠方便,介面直覺,點幾下就能開好一台規格不錯的伺服器,省去我們這些工程師一堆繁瑣的 `sudo` 指令。但這也是個甜蜜的陷阱,很多人開好主機、裝好 WordPress 之後,就以為萬事大吉了。錯!大錯特錯!

Cloudways 的預設值,就像是買了一台跑車,卻一直用「節能模式」在市區龜速行駛。它能跑,但完全沒發揮潛力。要讓它變成真正的效能猛獸,你就得打開發動機蓋,親手做一些「黑魔法」般的調校。今天,就讓我這個有點囉嗦的工程師,帶你拿著手術刀,精準地剖析 Cloudways 的效能核心,從伺服器設定、快取策略到資料庫優化,一步步榨乾你主機的最後一滴效能!

第一刀:地基決定一切!伺服器層級的精準設定

在我們談論任何花俏的快取技術之前,得先確保伺服器本身的地基是穩固的。這就像蓋房子,地基歪了,上面蓋 101 大樓也沒用。在 Cloudways 後台,有幾個關鍵設定,你絕對不能忽略。

1. PHP 版本與 FPM 設定:網站的心臟與心律調節器

PHP 是 WordPress 的命脈。選擇正確的 PHP 版本,就像為你的網站心臟選擇最適當的燃料。Cloudways 讓你可以輕鬆切換版本,我的建議是:永遠選擇最新穩定版(例如 PHP 8.1 或 8.2),除非你有特定外掛或主題不相容。新版本的效能通常比舊版好上一大截。

但光選版本還不夠,真正的魔鬼藏在「進階設定」(Advanced Settings)裡的 PHP-FPM(FastCGI Process Manager)設定中。這裡有幾個關鍵參數:

  • `memory_limit`:每個 PHP 程序能使用的最大記憶體。對於 WooCommerce 或複雜的會員網站,預設的 128M 或 256M 可能不夠,可以視情況調整到 512M。但不是越高越好,亂設可能會耗盡伺服器資源。
  • `max_execution_time`:PHP 腳本最長執行時間。如果你有匯入/匯出或複雜的背景任務,可能需要提高這個值,避免腳本跑到一半被中斷。
  • `opcache.memory_consumption`:OPcache 是 PHP 的內建快取,能顯著提升效能。確保這個值足夠大(例如 128MB 或 256MB),可以容納你網站所有的 PHP 腳本。

這些設定就像調整心律調節器,需要根據你網站的「心跳」(流量和複雜度)來微調,調對了,效能馬上就有感。

2. MariaDB 版本:資料庫的大腦

Cloudways 預設使用 MariaDB,它是 MySQL 的一個高效能分支。跟 PHP 一樣,盡量選擇較新的穩定版本。新版通常在查詢優化器(Query Optimizer)和儲存引擎(Storage Engine)方面有更好的表現,這直接影響你網站後台和前台的資料讀取速度。

第二刀:快取策略的藝術,而不只是「啟用」而已

快取是網站加速的靈魂。Cloudways 提供了非常強大的內建快取工具,但很多人只知道把它「打開」,卻不知道如何「駕馭」。

1. Varnish:快如閃電的門房

Varnish 是一個 HTTP 反向代理快取,你可以把它想像成一個記憶力超群的網站門房。當第一個訪客來訪時,Varnish 會把整個渲染好的 HTML 頁面記下來。下一個訪客來訪同一個頁面時,Varnish 就直接把記憶中的頁面給他,完全不用再去麻煩後端的 WordPress 和資料庫,速度快到不可思議!

這對於部落格、形象網站等靜態內容多的網站來說是神器。但在 Cloudways 上,你必須學會管理它的「例外規則」(Exclusion Rules)。

舉個工程師最常遇到的例子:WooCommerce 網站。你總不希望 A 客戶的購物車頁面被 Varnish 快取起來,然後顯示給 B 客戶看吧?那會是災難!因此,你必須到 Cloudways 後台的 Application Settings > Varnish Settings,把購物車 (`/cart/*`)、結帳 (`/checkout/*`)、我的帳號 (`/my-account/*`) 等動態頁面的 URL 加入排除列表。

搞懂 Varnish 的運作邏輯,才能讓它成為你的助力,而不是阻力。

2. Redis Object Cache:資料庫的專屬秘書

如果說 Varnish 是快取「整個頁面」,那 Redis 就是快取「組成頁面的零件」。WordPress 網站每次載入頁面,都需要向資料庫發出大量查詢(Query),例如:取得文章內容、取得網站設定、取得使用者資訊等等。這些查詢其實很花時間。

Redis Object Cache 的作用,就是把這些頻繁查詢的結果暫存在記憶體中。下次 WordPress 需要同樣的資料時,就直接跟 Redis 這個專屬秘書拿,不用再跑去翻閱厚重的資料庫檔案櫃。這對於資料庫負擔重的網站(如大型電商、論壇、LMS 線上課程網站)來說,效果極為顯著。

在 Cloudways 啟用 Redis 非常簡單,在「伺服器管理」(Server Management)>「管理服務」(Manage Services)裡一鍵啟用。啟用後,記得回到 WordPress 後台安裝 Cloudways 官方的 Breeze 外掛或任何支援 Redis 的外掛(如 WP Rocket),並在設定中啟用 Object Cache,這樣 WordPress 才知道要去找 Redis 這位秘書。

怎麼確認 Redis 有沒有在工作?你可以透過 SSH 連線到主機,或用 WP-CLI 指令檢查。這有點 hardcore,但身為工程師,看到 `wp cache type` 回傳 `Redis` 時,那種滿足感是難以言喻的!

# 透過 WP-CLI 檢查快取類型
$ wp cache type
Success: The cache type is Redis.

第三刀:WordPress 應用層的精雕細琢

伺服器和快取都設定好了,最後一哩路就在 WordPress 本身。有些小細節,往往是拖垮效能的元兇。

1. 告別 WP-Cron,擁抱真正的排程任務

WordPress 有個內建的排程系統叫做 WP-Cron,用來處理像是定時發文、檢查更新等任務。但它的觸發機制有個天生的缺陷:它需要有訪客瀏覽網站時才會被觸發。如果你的網站流量不穩定或半夜沒人來,很多排程任務就會被延誤。

更糟的是,在高流量網站上,每次頁面載入都去檢查排程,反而會造成不必要的伺服器資源浪費。

專業的做法是關閉 WP-Cron,改用系統層級的 Cron Job。在 Cloudways 上設定非常簡單:

  1. 首先,在你的 `wp-config.php` 檔案中加入以下這行,禁用預設的 WP-Cron:
    define('DISABLE_WP_CRON', true);
  2. 接著,到 Cloudways 後台的「應用程式管理」(Application Management)>「排程任務」(Cron Job Management),新增一個排程。
  3. 設定每 5 分鐘或 15 分鐘執行一次,指令填入:
    wget -q -O - https://yourdomain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

這樣一來,你的排程任務就會由伺服器穩定地、在背景執行,不再干擾前端使用者的載入速度。這是一個小改動,卻能帶來穩定性與效能的大提升。

2. 資料庫定期大掃除

WordPress 用久了,資料庫會堆積很多垃圾,例如文章修訂版本、自動草稿、被刪除的留言和過期的暫存資料(Transients)。這些都會讓資料庫越來越肥大,查詢速度變慢。

你可以使用像 WP-Optimize 或 Breeze 內建的資料庫清理功能,定期幫資料庫瘦身。就像家裡要定期大掃除一樣,保持資料庫的輕盈,是維持網站反應速度的不二法門。

結論:效能優化是一場永無止盡的探索

Cloudways 是一個非常優秀的主機管理平台,它給了我們強大的工具,但真正的力量在於我們如何去使用這些工具。今天的分享,只是 Cloudways 主機最佳化技巧的冰山一角,從 CDN 的選擇、圖片優化策略,到使用 New Relic 進行更深度的效能監控,還有很多可以探索的領域。

記住,效能優化不是一次性的任務,而是一個持續監控、分析、調整的循環過程。當你把每一次的調整都看作是與伺服器對話、挖掘其潛能的過程時,你會發現其中的樂趣無窮。當然,如果你覺得這些技術細節太過繁瑣,或是你的時間更應該專注在業務發展上......

那麼,何不把這些麻煩事交給專業的來?

延伸閱讀

需要專業的 WordPress 效能調校服務嗎?

覺得這些設定太複雜,或是想讓你的網站效能更上一層樓?別再自己埋頭苦幹了!我們浪花科技專門處理各種 WordPress 網站的疑難雜症,從伺服器架構、效能瓶頸分析到客製化功能開發。點擊下方連結,填寫表單,讓我們來幫你打造一台真正的效能猛獸!

立即聯繫浪花科技,釋放你的網站全部潛力!

// FAQ

常見問題

在 Cloudways 上 PHP-FPM 有哪些關鍵效能參數可調整?
主要有三個:memory_limit 控制每個 PHP 程序可用的最大記憶體,WooCommerce 或複雜會員網站可視情況調到 512M,但過高可能耗盡資源;max_execution_time 控制腳本最長執行時間,有匯入匯出或背景任務時可提高;opcache.memory_consumption 應設足夠大(如 128MB 或 256MB)以容納網站所有 PHP 腳本。
Cloudways 上的 Varnish 是什麼?WooCommerce 網站要怎麼設定才不會出錯?
Varnish 是 HTTP 反向代理快取,會把整個渲染好的 HTML 頁面記下來,後續訪客直接拿快取頁面,不再麻煩後端 WordPress 與資料庫。但購物車、結帳、我的帳號等動態頁面不能被快取,否則會把 A 客戶的內容顯示給 B 客戶。需到 Cloudways 後台 Application Settings > Varnish Settings,把 /cart/*、/checkout/*、/my-account/* 等 URL 加入排除列表。
Cloudways 的 Varnish 和 Redis Object Cache 差別在哪?
Varnish 快取的是「整個頁面」的 HTML,適合靜態內容多的部落格或形象網站;Redis Object Cache 快取的是「組成頁面的零件」,也就是 WordPress 載入頁面時頻繁向資料庫發出的查詢結果。對資料庫負擔重的網站(如大型電商、論壇、線上課程網站),Redis 的效果尤其顯著。
怎麼確認 WordPress 的 Redis 物件快取有在運作?
在 Cloudways 後台「伺服器管理 > 管理服務」啟用 Redis 後,須回到 WordPress 安裝支援 Redis 的外掛(如 Breeze 或 WP Rocket)並啟用 Object Cache。確認方式可透過 SSH 連到主機執行 WP-CLI 指令 wp cache type,若回傳 Redis 即代表物件快取正在使用 Redis。
高流量 WordPress 網站為什麼要關閉 WP-Cron 改用系統 Cron Job?
WP-Cron 需要有訪客瀏覽網站時才會被觸發,流量不穩或半夜沒人時排程任務會延誤;高流量時每次頁面載入都檢查排程又會浪費資源。專業做法是在 wp-config.php 加入 define('DISABLE_WP_CRON', true); 禁用內建 WP-Cron,再到 Cloudways 的排程任務(Cron Job Management)新增系統層級排程,例如每 5 或 15 分鐘執行一次。
~/roamer-tech/newsletter // FREE
// newsletter

訂閱免費電子報

把 AI 自動化、企業系統設計與 WordPress / Laravel 開發的真實案例和可直接照做的技巧,整理成電子報寄給你。只寄精選內容、不灌垃圾信,一鍵就能退訂。

$
// final.exec()

準備好讓你的網站開始為你工作了嗎?