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

Cloudways 速度還能更快?別只會點按鈕!「進階調校」黑魔法,解鎖 120% 伺服器潛能

Eric — 浪花科技創辦人 / AI 架構師
Eric
浪花科技創辦人 · AI 架構師
Cloudways 速度還能更快?別只會點按鈕!「進階調校」黑魔法,解鎖 120% 伺服器潛能
目錄 table-of-contents.md

把 Cloudways 面板上的綠色按鈕全部點亮,其實只榨出了伺服器七成左右的效能。Varnish、Redis、PHP 版本升級這些一鍵設定當然方便,但真正的調校空間,藏在圖形介面沒有暴露出來的設定檔深處。這篇就來聊那些官方文件不會主動告訴你的進階黑魔法,把剩下的潛能解出來。

老實說,差得遠呢!Cloudways 提供的是一個絕佳的起點,一個幫你把地基打好的高效能環境。但真正的效能調校,是從這些「預設值」之後才開始的。這就像你買了一台性能跑車,但如果不懂得調整懸吊、胎壓,甚至連換檔時機都抓不準,你依然跑不出它的極限。今天,我們不談那些基礎的「點按鈕」操作,我要帶你鑽進 Cloudways 的引擎蓋底下,用一些進階的 Cloudways 主機最佳化技巧,榨乾伺服器的最後一滴效能。

第一站:重新檢視基礎設定,魔鬼藏在你看不到的細節裡

在我們開始修改複雜的設定檔之前,有幾個基礎觀念必須先校準。很多時候效能瓶頸不是出在什麼高深技術,而是最開始的選擇就錯了。

PHP 版本不是最新就好,選對「穩定版」才重要

Cloudways 的面板可以讓你一鍵切換 PHP 版本,這功能實在太方便了。很多新手看到 PHP 8.2、8.3 推出了,就急著想衝第一波。嘿,冷靜點!身為工程師,我們追求的不是「最新」,而是「最穩」。

  • 效能 vs. 相容性: 新版本的 PHP 通常會帶來效能提升,但它也可能跟你網站上某些舊外掛或主題「八字不合」,導致網站出現致命錯誤(就是那個讓人心頭一驚的死亡白畫面)。
  • 我的建議: 在升級前,先用 Cloudways 的「Staging」功能複製一個測試站。在測試站上把 PHP 升上去,然後把網站所有功能都點過一遍,確定沒問題再同步到正式站。目前來說,PHP 8.1 或 8.0 是兼具效能與穩定性的好選擇。除非你有特定需求,不然真的沒必要去追最新的版本。

伺服器規格的迷思:別再無腦升級了!

「網站變慢了?升級主機啊!」這大概是我聽過最多次,也最想吐槽的建議。加大記憶體、增加 CPU 核心數,確實能解決一部分問題,但這就像水管漏水,你不想著去補洞,卻一直加大水塔一樣,治標不治本。

在 Cloudways 上,你該思考的是:

  • 瓶頸在哪裡? 你的網站是 CPU 吃緊(大量運算、複雜查詢),還是記憶體不足(高流量、物件快取多),或是 I/O 緩慢(大量讀寫資料庫)?Cloudways 的監控圖表可以給你一些線索。
  • 選擇對的主機類型: Cloudways 提供了標準型(Standard)和進階型(Premium / High Frequency)。如果你的網站是資料庫密集型的應用(例如 WooCommerce),選擇 Vultr High Frequency 或 DigitalOcean Premium Droplets,它們擁有更快的 NVMe SSD 和 CPU,對資料庫效能的提升遠比單純加大記憶體來得有效。這點小錢,花得絕對值得。

第二站:榨乾 Varnish 與 Redis 的最後一滴效能

Cloudways 讓安裝 Varnish 和 Redis 變得輕而易舉,但 90% 的使用者也就停留在「啟用」這個步驟。這太浪費了!這兩大神器其實還有很多潛力可以挖掘。

Redis 不只是物件快取:啟用 Persistent Connection

當你在 Cloudways 上啟用 Redis,它預設是作為 WordPress 的「物件快取」(Object Cache)。它會把資料庫查詢的結果暫存在記憶體中,下次同樣的查詢就不用再跟資料庫打交道,速度自然快。但這裡有個小細節:預設情況下,每次頁面載入,PHP 都會重新和 Redis 建立一次連線,載入完畢後再斷開。在高流量下,這個重複建立/斷開連線的過程本身就會成為一個小小的效能開銷。

解法就是啟用「持續連線」(Persistent Connection)。

很簡單,你只需要透過 SSH 或 FTP,編輯你網站根目錄下的 wp-config.php 檔案,在 /* That's all, stop editing! Happy publishing. */ 這一行之前,加入以下設定:

define('WP_REDIS_CLIENT', 'phpredis');
define('WP_REDIS_CONNECTION_TYPE', 'tcp');
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_TIMEOUT', 1);
define('WP_REDIS_READ_TIMEOUT', 1);
// 加上這行啟用 Persistent Connection
define('WP_REDIS_PERSISTENT', true);
// 如果你有設定 Redis 密碼,記得加上這行
// define('WP_REDIS_PASSWORD', 'your-redis-password');

只要加上 WP_REDIS_PERSISTENT 這一行,就能讓 PHP 和 Redis 之間建立一條「熱線」,省去重複連線的麻煩。這在流量大的網站上,效果特別明顯。

Varnish 快取規則進階客製化(高階技巧,請小心服用)

Varnish 是個威力強大的「全頁快取」(Full Page Cache),它會把整個渲染好的 HTML 頁面存起來,當下一個訪客來訪時,直接把這個存好的頁面丟給他,連 WordPress 核心都沒碰到,速度快到飛起。Cloudways 的面板可以讓你設定哪些 URL 或 Cookie「不要」快取,但如果你想做更複雜的控制呢?

例如,你希望針對來自手機的訪客,提供一個稍微不同的快取版本。這時候就得動到 Varnish 的設定檔,也就是 VCL (Varnish Configuration Language)。

警告:這屬於高風險操作,改錯了會讓你的網站直接掛掉。操作前請務必備份,並在測試站上進行。

你可以透過 SSH 連線到主機,找到你的 VCL 設定檔(通常路徑會在 /etc/varnish/default.vcl 或類似的地方,Cloudways 可能有自己的管理方式,請先查閱官方文件)。你可以在 vcl_recv 這個區塊加入判斷邏輯。例如,簡單根據 User-Agent 來區分裝置:

sub vcl_recv {
    # ... 其他預設規則 ...

    if (req.http.User-Agent ~ "(?i)iphone|android|mobile") {
        set req.http.X-Device = "mobile";
    } else {
        set req.http.X-Device = "desktop";
    }

    # ... 其他預設規則 ...
}

sub vcl_hash {
    # ... 其他預設規則 ...

    hash_data(req.http.X-Device);

    # ... 其他預設規則 ...
}

這段程式碼的意思是,在收到請求時,檢查 User-Agent,如果是手機,就加上一個 `X-Device: mobile` 的 Header。然後在計算快取雜湊值(hash)時,把這個 Header 也算進去。這樣一來,Varnish 就會為電腦版和手機版各存一份獨立的快取。這只是個簡單範例,VCL 的玩法非常多樣,但也能看出它強大的客製化能力。

第三站:深入系統底層,微調 Nginx 與 MariaDB

Cloudways 採用了 Nginx + Apache 的混合架構(Nginx 做前端代理,Apache 處理 PHP),並使用 MariaDB 做為資料庫。這些軟體都有許多可供微調的參數。

自訂 Nginx 設定:Gzip 壓縮等級與靜態資源過期時間

在 Cloudways 的 Application Settings > Nginx Settings,你可以直接修改 Nginx 的設定檔。這裡有兩個地方可以優化:

  • Gzip 壓縮等級: Cloudways 預設啟用了 Gzip,但你可以調整壓縮等級 gzip_comp_level。預設可能是 4 或 5,你可以試著調到 6。再往上雖然壓縮率更高,但會增加 CPU 的負擔,不一定划算。
  • 靜態資源快取: 你可以針對圖片、CSS、JS 檔設定更長的瀏覽器快取過期時間(expires)。讓訪客的瀏覽器把這些不常變動的檔案存久一點,下次訪問就不用重新下載。

例如,你可以在設定檔中加入:

location ~* \.(css|js|gif|jpe?g|png)$ {
  expires 1M;
  add_header Pragma public;
  add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}

這會告訴瀏覽器,把這些靜態檔案快取一個月(1M)。

找出資料庫元兇:啟用慢查詢日誌 (Slow Query Log)

網站慢,很多時候是資料庫查詢的鍋。某個外掛寫了一個超沒效率的查詢,拖慢了整個網站。要抓出這個兇手,最好的方法就是啟用「慢查詢日誌」。

雖然 Cloudways 面板沒有直接的按鈕,但你可以透過 SSH 連線後,用 MySQL 指令來啟用它。連上資料庫後,執行:

SET GLOBAL slow_query_log = 'ON';
SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';
SET GLOBAL long_query_time = 2; -- 紀錄超過 2 秒的查詢

這樣,所有執行超過 2 秒的 SQL 查詢都會被記錄到 mysql-slow.log 這個檔案裡。你可以過一段時間去檢查這個檔案,看看是哪個外掛或哪個頁面在搞鬼。這對於揪出效能害蟲來說,是非常精準的武器。找到問題後,看是要換掉外掛,還是用資料庫索引優化來解決。

總結:效能優化是一趟永無止盡的旅程

看到這裡,你應該明白 Cloudways 的潛力遠不止於它面板上呈現的那些功能。從 PHP 版本的選擇、伺服器類型的權衡,到深入 Redis 的持續連線、客製化 Varnish 規則,再到微調 Nginx 和分析 MariaDB 慢查詢,每一步都是在為你的網站爭取那零點幾秒的載入速度。

這就是工程師的浪漫吧!我們不滿足於「能用就好」,而是不斷追求「更好更快」。Cloudways 提供了一個絕佳的平台,讓我們可以專注在這些真正影響效能的細節上,而不用去煩惱底層環境的維護。希望今天分享的這些 Cloudways 主機最佳化技巧,能幫助你把你的網站速度推向下一個層級。

當然,效能調校是個系統工程,涉及前端、後端、資料庫到伺服器架構。如果你覺得這些設定太過複雜,或是在調校過程中遇到了瓶頸,別擔心,這正是我們浪花科技的專業所在。

推薦閱讀

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

覺得網站速度還是不滿意,或是面對複雜的設定檔感到頭痛?浪花科技擁有豐富的 WordPress 效能優化與伺服器調校經驗。讓我們為你進行全面的網站健檢,找出效能瓶頸,並打造最適合你業務需求的解決方案。立即點擊這裡填寫表單,與我們的技術專家聊聊吧!

// FAQ

常見問題

Cloudways 上 PHP 版本是不是越新越好?
不一定。新版 PHP 通常帶來效能提升,但可能與部分舊外掛或主題不相容,導致網站出現致命錯誤。建議升級前先用 Cloudways 的 Staging 功能複製測試站,把所有功能點過一遍確認無誤再同步到正式站。在效能與穩定性的取捨上,PHP 8.0 或 8.1 是兼顧兩者的穩定選擇。
如何讓 Cloudways 的 Redis 啟用持續連線(Persistent Connection)?
Cloudways 啟用 Redis 後預設作為物件快取,但每次頁面載入都會重新建立並斷開連線,在高流量下形成額外開銷。解法是編輯 wp-config.php,在「stop editing」那行之前加入 define('WP_REDIS_PERSISTENT', true); 並設定對應的 client、host、port 等參數,即可在 PHP 與 Redis 之間維持一條熱線,省去重複連線。
網站變慢時直接升級主機規格是好辦法嗎?
不一定,這往往只是治標。應先用監控圖表判斷瓶頸在哪:是 CPU 吃緊(複雜運算與查詢)、記憶體不足,還是 I/O 緩慢(大量讀寫資料庫)。若是資料庫密集型應用(如 WooCommerce),選擇具備更快 NVMe SSD 的主機類型(如 Vultr High Frequency 或 DigitalOcean Premium)對效能的提升,往往比單純加大記憶體更有效。
Varnish 與 Redis 在 Cloudways 上分別扮演什麼角色?
Varnish 是全頁快取(Full Page Cache),會把渲染完成的整個 HTML 頁面存起來,下一位訪客來訪時直接回傳,連 WordPress 核心都不需執行,速度極快。Redis 則作為物件快取,把資料庫查詢結果暫存在記憶體中,相同查詢下次就不必再查資料庫。兩者分屬不同層級的快取,可同時運用。
如何找出拖慢 WordPress 的低效資料庫查詢?
可啟用 MySQL/MariaDB 的慢查詢日誌(Slow Query Log)。Cloudways 面板雖無直接按鈕,但可透過 SSH 連線後以 MySQL 指令啟用(如 SET GLOBAL slow_query_log),讓系統記錄執行過久的查詢,藉此找出寫得沒效率、拖慢整站的查詢來源。
~/roamer-tech/newsletter // FREE
// newsletter

訂閱免費電子報

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

$
// final.exec()

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