Yungke blog

Like kinsta & WordPress

WordPress 高流量網站處理概念

Onur Binay

在將 WordPress 用於高流量網站之前,你需要確保網站已準備好可以處理高流量了,WordPress 當然能夠管理大量流量,但是,任何網站主機平臺本身的效能都存在限制。

當你確認好你的網站使用的伺服器規格、快取系統或檔案大小時,必須確保網站不會在僅收到數千次點擊後當機。

硬體限制

最常遇到設計師錯估了這個部分,總認為少量的金錢能發揮最大的效益。

WordPress 是最誠實的 CMS 程式,你花多少硬體費用,他就做多少事 !

CPU 處理器

能選擇最新世代的 CPU 處理器,就去選擇它 !

WordPress 核心,外掛和佈景主題使用稱為 PHP 的編程語言編寫,代碼是由 PHP Workers 執行的,這些 PHP Workers 是後台進程,它們執行各種任務,從進行數據庫查詢,生成網站頁面到發送 WooCommerce 商店的訂單確認。

PHP Workers 需要處理對 WordPress 網站的未快取頁面的請求,由於 CPU 性能直接影響 PHP Workers 處理代碼的速度,因此,一個超快速 CPU 對 WordPress 網站的處理能力具有直接影響。

這也是為何 Kinsta 喜歡使用 Google Cloud 的 C2 / C3D 伺服器。

RAM 記憶體

高流量會對伺服器的內部資源提出很高的要求,除了 CPU 以上敘述的需求外,還要有足夠的記憶體資源來滿足 CPU 的處理能力。

資料庫 MySQL / MariaDB

與許多的 Web 應用程式一樣,WordPress 需依賴 MySQL 或 MariaDB 來儲存用於產生輸出的資料;WordPress 對 MySQL / MariaDB 發出的每個請求,包括讀取和寫入的動作,都會在伺服器上產生一定程度的負載。

WordPress 需要不斷的最佳化,這裡說的「最佳化」指的是在外掛或佈景主題運行中的 PHP Errer 錯誤,Errer 錯的越多 (你不去 Debug),在高流量情況下,對資料庫的壓力就越大,而會導致訪客的瀏覽器中出現「連線逾時」或「資料庫連線錯誤」的回應。

Error Establishing Database Connection

網路頻寬限制

主機商網路頻寬提供,通常為 10Mbps/s、100Mbps/s 或 1Gbps/s,這就很清楚說明你的伺服器傳輸檔案的速度不能超過此網路連線頻寬的傳輸速度。

我們假設每一個客戶端平均命中網頁產生 500KB 的傳輸資料 (包含 HTML、圖片、CSS、JS、下載的檔案等等),總計 500KB/s,相當於每一秒佔用約 4Mbps/s 的頻寬1持續吞吐量。 

如果 10 個人在一秒鐘內突然造訪該網站,並且該點擊率持續很長一段時間,那麼將需要 40Mbps/s 的頻寬連接才能跟上同時連接的速度。

如果你的主機商只給你分配網路速度僅為 10Mbps/s,則需求已經超出了容量,10 個人需要花費 4 秒才能傳輸完成,以此類推,在這種情況下,網路是流量、頻寬才是真正的問題,而不是 WordPress 的效能。

理論上,一樣是 500KB 傳輸資料,我們推算 100Mbps/s 網路頻寬 1 秒可以以相同的下載速率處理大約 25 個同時連接數,但大多數共享託管主機商無法提供此速度所需的頻寬。

高流量解決方案

我的建議 (理想):

– 圖片越少越小越好
– WordPress 外掛使用越少越好
– 活動頁面設計越簡單越好

講起來容易,做起來非常困難 ! 客戶總希望網頁圖片要大、要多,特效也要有,產品顯示越多越好。

WordPress 只有在各方面條件準備妥當下,在高流量情形下才能達到最佳狀態。

網站快取和 CDN 適當的應用可以有效降低伺服器的負載狀態。

「可以在伺服器端處理的事情就盡量在伺服器這一端先處理完成。」

不要留給後面的 WordPress 來處理。

為何我一直強調,伺服器快取機制會比 WordPress 快取外掛來的更好,CDN 的道理也是相同,客戶端的連線還未到達你的伺服器端時,在 CDN 結點上就已經分攤了圖片、CSS、JS 的流量壓力。

另一方面,高流量訪問網站的合理瀏覽流程,也是設計師常忽略的一環,例如:需登入帳號才能瀏覽商品頁或是必須登入帳號才可以瀏覽文章,這些做法都會大幅度增加資料庫提早處理不必要的壓力。

結論

設計師、代管主機工程師和客戶之間有沒有良好的溝通,一個活動網站或高流量網站所需的硬體設施和預算 (金錢) 有沒有達到共識。

你對高流量網站有何看法,歡迎在下方留言告訴我。

Photo by Onur Binay on Unsplash

  1. 頻寬 (bps) = 資料量 (bits) / 時間 (s) ↩︎

2 則留言

  1. 「freedown」的個人頭像

    勇哥,你改回 WordPress 了是嗎?

    1. 「yungkeli」的個人頭像

      是的。
      有時候還會發發廢文,WordPress 還是方便一點。
      Simply Static 前陣子壞掉,圖片推不到 Github 上,就先換回來了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Your Mastodon Instance