You are currently viewing WordPress快取六層級,協助你逐步調教網站效能

WordPress快取六層級,協助你逐步調教網站效能

WordPreess快取和效能調教可以分成六個層級,透過分層了解自己的網站使用了那些項目來進行調整或增減,可以達到最佳的效果。同時這篇文章也會協助你對快取外掛所提供的功能有基礎的了解,避免使用了多個重複功能的快取,反而導致網站執行的速度變慢。

特別注意的是:你並不需要六層快取等級都具備,依照需求使用及設定才可以達到最佳的效果。

第一層:Opcache 編譯層級

這是程式碼編譯的層級。WordPress、外掛和主題是「程式設計師」使用 PHP語法撰寫而成,這些語法會在每次訪客瀏覽網站時「編譯成電腦理解」的格式,然後產出結果(網站呈現)給訪客。Opcache的模組基本上已經是和 PHP 5.5套裝在一起,如果你不確定網站所使用的 PHP版本,你可以從 WordPress控台左側「網站狀態」>右側的「網站狀態資訊」下方「伺服器狀態」中找到「PHP版本」;Opcode會幫你將這些程式碼編譯在記憶體中,這麼做就能在訪客瀏覽時快速地呈現網站。

WordPress官方網站中,建議使用的最低版本為 PHP 7.4,使用新版本不但比較安全且執行速度較快。如果你的網站仍在使用低於 PHP 5.5 甚至 PHP 7.4之前的版本,建議尋求主機商的協助升級為較新的版本。

如果已經使用了新版本,那麼你不需要在這個層級進行其他的操作。

第二層:物件快取

MySQL或 MariaDB是 WordPress所採用的資料庫系統,同樣的你可以在上述的「伺服器狀態」中找到「資料庫」欄位下「伺服器版本」檢視自己的資料庫屬於哪一種。我們所撰寫的文章、WordPress設定、主題及外掛的設定幾乎都儲存在資料庫中,當訪客瀏覽網站時,系統會從資料庫取得這些資料並呈現給訪客;當你的文章數量越多、外掛使用越多、主題的複雜程度越高等,就會導致 WordPress要從資料庫存取越多的資料,如果主機的效能不好,那麼存取的速度就會變慢。

這些從資料庫存取的資料有很多是可以被快取的重複資料,快取後就無須每次都從資料庫存取,而要快取這些資料就需要使用 Memcached或 Redis這類模組。這兩種都可以協助你將對資料庫存取的資料快取在記憶體中,讓訪客造訪網站時從記憶體直接存取而不必等待資料庫存取,以達到加速的目的。

不過如果你使用的是虛擬主機,很可能沒有提供這兩項較為進階的功能,如果你想要尋找具有 Memcached功能的主機可以參考我使用的 TMDHosting,以及使用 Memcached的方法

第三層:完整頁面快取

也許我們終於來到你熟悉的部分。完整頁面快取是大多數的 WordPress快取外掛所提供的功能,包含免費的 WP Fastest Cache、WP Super Cache、W3 Total Cache或 LiteSpeed Cache、付費的 WP Rocket外掛等都提供完整頁面快取的功能,也就是常聽到的偽靜態快取。把原本需要透過 PHP動態編譯和資料庫讀取的網站存成靜態 HTML的格式在伺服器硬碟並提供給訪客,從而減少編譯時間提升速度。

如果你的網站還沒有快取外掛,從知名的外掛中選擇一個開始使用就可以了。

第四層:HTTP加速工具

從前面我們可以瞭解到,快取有儲存在硬碟的也有儲存在記憶體的,雖然大多數知名的虛擬主機廠商都採用了 SSD固態硬碟,但記憶體的速度相對硬碟來說速度還是快上不少,第四層的 HTTP加速工具同樣是在記憶體協助你改善網站速度。

Varnish和 FastCGI with Nginx是這層的主角。訪客瀏覽網站時會對伺服器發出許多 HTTP的請求(請求傳送各種檔案、語法等)並取回這些資源最終呈現網站在電腦上,Varnish和 FastCGI with Nginx就是將這些 HTTP的請求快取在記憶體中來達到加速的作用。不過這兩類的功能基本上需要 VPS主機才會提供,大多數的虛擬主機則沒有(或較為高階的方案才提供)。

如果你有考慮使用 VPS的主機而且也希望使用到 Varnish或先前提到的 Memcached等,你可參考 Cloudways,這篇文章是我將公司網站從虛擬主機過渡到 VPS主機的心得。

第五層:CDN 內容傳遞網路

這可能永遠是讓新手最困惑的一層。
CDN能不能加速網站:可以;但能不能加速你的網站給訪客,則是不一定。使用 CDN前,特別是當你要使用的是免費的 CDN時,要特別注意 CDN也有效能與傳輸的問題。CDN的原理是,把你網站的內容快取在全球伺服器中,並從距離訪客最近的位置傳送給它,例如你的主機位在台灣訪客來自美國,美國訪客不必跨海傳輸,就可以從美國的 CDN伺服器收到你的網站內容,減少傳輸時間。(以及附加的各類壓縮功能)

免費且大型的 CDN就屬 Cloudflare了,如果你的主要訪客位於國外居多,而你的主機位置也「遠離」主要訪客的區域,那麼 Cloudflare免費 CDN就會對訪客具有加速的效果;但是如果你的主機位於台灣,且訪客也主要來自於台灣,那麼使用 Cloudflare免費 CDN事實上不會加速還可能會減速。減速的詳細原因以及如何得知你的訪客來源,可以參考這篇文章。其他也有免費的 CDN,例如 litespeed的 QUIC.cloud、Statically CDN或 Jetpack的 CDN,是否要使用這些 CDN除了考量上述的位置外,還有這些 CDN的全球伺服器位置、提供的傳輸流量等,避免越用越慢喔。

第六層:瀏覽器快取

前五層都是在伺服器端的調整範圍,現在第六層瀏覽器快取則是來到了使用者的範圍。當訪客瀏覽你的網站時,會下載樣式語法、圖片、效果語法等檔案,這些檔案可以被儲存在瀏覽器中,保留下次使用或瀏覽其他頁面時重複使用,無須每次都從網站上下載。因此在大多數的 WordPress快取外掛中,會提供瀏覽器快取的時間,就是要在這些檔案標記上過期時間(保存期限),當過了保存期限,才會從伺服器上重新下載新的檔案。設定保存期限的時間需要依照你的更新頻率網站而定,並非越長越好,如果時間太長那麼訪客可能因此一直看到舊的內容或樣式。

有些快取外掛本身並沒有壓縮 CSS樣式或 Javascript語法的功能,你可能會額外安裝例如 Autoptimize這類的語法壓縮外掛,並記得在這類外掛中設定正確的過期時間。

現在有不少外掛都會將各層整合在一起,你可以逐步檢查六層中你使用了哪些,並透過不同的組合與搭配調整出可以最快速呈現網站的方式。也要記得 PageSpeed Insight和 GTmetrix分數是做為參考指標,要將實際訪客使用的感受做為調整網站效能的第一優先才是正確的做法。

WordPress快取六層級,協助你逐步調教網站效能 1

Sid

喜愛電腦資訊、歷史、古文明、宇宙、自然生態的主題。喜歡看卡通和科幻主題的電影,有長不大的心情。從事金融業相關工作,分享的技巧多來自工作上的各項應用實作。

發佈留言