WordPress性能優化:為什麼我的博客比你的快?

WordPress 很慢?

很多博主都會感覺 WordPress 很慢?作為全世界最常用的建站和博客系統 WordPress 來說,在性能設計上肯定不會有太大的問題,WordPress 開發團隊也肯定也考慮到這個問題。

那麼 WordPress 效率問題主要是出在哪裡呢?根據我多年 WordPress 建站和維護的經驗,很多性能的問題都是 WordPress 使用不當造成的,比如安裝太多效率低下的插件,使用代碼質量低下的主題,沒有正確處理 WordPress 的緩存等等,所以提高 WordPress 性能,就要從這些方面入手。

今天就給大傢講講自己多年總結的 WordPress 優化經驗和技巧:

動靜態分離

不管 WordPress 博客還是其他 CMS 建的站點,優化的第一步一定是動靜態分離,這也是你看到新浪,騰訊等門戶,他們圖片的域名和網站的域名不是同一個的原因。

網站的靜態文件一般有兩種:第一種是網站的 CSS,JS 和一些主題的常用背景圖片和按鈕文件,這些圖片如果網站不進行改版或者其他改動,基本上是不會修改的,第二種是每天更新的網站內容中上傳的圖片或者附件,這些圖片文件也是基本不會改動的。

解決好靜態文件存儲和加速,網站性能就首先能得到基本的保證瞭,WordPress 構建的網站和博客也是一樣的。對於這些靜態文件來說,最好的解決方案永遠是使用 CDN 網絡進行加速,這樣服務器的壓力將大大降低,因為訪問頁面隻有當前頁面是在自己的服務器上,其他所有圖片, JS 和 CSS 都是從 CDN獲取的。

從使用便捷性和性價比角度來說,個人推薦 WordPress 博客最方便使用的七牛雲存儲,我也寫瞭一個七牛鏡像存儲的 WordPress 插件,讓你可以一鍵實現 WordPress 博客靜態文件 CDN 加速。

服務器優化

優化好靜態文件之後,就要開始對網站的動態內容進行優化,優化動態內容,首先要有一個穩定網絡環境,穩定的主機供應商和服務器性能的優化。

選擇一個靠譜的主機托管商,個人推薦 BGP 或者多線機房,讓全國用戶訪問都能有不錯的速度,然後盡量選擇獨立的服務器,再不濟,也得 VPS, 因為你沒有服務器的 Root 權限很多東西是無法進行的。這裡推薦:美團雲。

服務器問題解決之後,服務器可以做如下優化:

  • MySQL 設置 MySQL Query Cache,可以保存保存查詢結果,同樣的查詢不再從數據庫檢索,對速度有很大的提升。
  • PHP 開啟 OPCache:把經過編譯後的 PHP 代碼緩存到共享內存中,並在用戶訪問的時候直接調用從而起到高效的加速作用。
  • 安裝 Memcached 和 PHP Memcached 擴展:使用 Memcached 來緩存 WordPress 數據。

WordPress 緩存

要徹底明白和搞懂 WordPress 性能優化,首先要理解 WordPress 緩存機制,WordPress 默認是一種叫做 WordPress Object Cache 的對象緩存機制,它是把需要緩存的內容按照 Key-Value 這樣的模式進行緩存(和 No-SQL 的 key-value 的有點類似),當然它還支持按照 Group 來劃分和避免緩存的內容沖突。

所以最基礎的 WordPress 緩存插件就是,把 WordPress 產生的 Key-Value 存起來,如果是使用 Memcached,就是存到內存,如果使用 Flie 就是存到硬盤中,當然高級的 WordPress 插件還能做更多,比如 WP Super Cache把整個頁面緩存到硬盤中,下次直接訪問靜態的 HTML 文件,讓服務器直接繞過 PHP,節約 CPU 時間。 Batcache 會把整個頁面當做一個對象存到內存裡面。我個人推薦使用 Memcached 和 Batcache 進行緩存。

對於已登陸的用戶,Memcached 會把 WordPress 的對象存到內存裡面,服務器的內存足夠大,讀取和存儲速度也夠快,並且內存緩存命中率也大於 97%。另外我們 WordPress 程序經過優化之後,每個頁面的查詢一般在 2 條左右,所以整個網站效率很高,首頁甚至做到 0 SQL,頁面生成隻需要 0.0013秒

對於未登錄的用戶,Batcache 會把整個頁面當做一個對象存到內存裡面,未登錄用戶訪問的時候,整個頁面從內存中取出,速度奇快。

WordPress 程序優化

WordPress 程序優化是基於 WordPress Object Cache 的機制對 WordPress 插件和主題進行優化,主要經驗有以下幾點:

  • 隻使用必須的 WordPress 插件,安裝太多的 WordPress 插件很容易引起性能問題。
  • 從正規站點下載 WordPress 主題,這樣下載的主題才能保證質量和安全。
  • WordPress 主題和插件盡量使用模板函數,因為 WordPress 模板函數如果可能都已經做好瞭 WordPress Object Cache。
    比如 get_the_terms 和 wp_get_object_terms 這兩個函數,功能基本一樣,但是 get_the_terms 直接從對象緩存中取數據,無查詢,而 wp_get_object_terms 每次都從數據庫中取數據。
  • WordPress 插件和主題如果一定要直接查詢數據庫,請做好 Object Cache,將查詢的結果使用 wp_cache_set 存到 Object Cache 中,下次直接使用 wp_cache_get 獲取。

選擇好的服務器和托管商,對 WordPress 程序進行優化,並且做好緩存,WordPress 效率其實很高的,加上 WordPress 本身的靈活性和功能強大,WordPress 作為各種建站絕對是非常不錯的選擇,所以我一直使用 WordPress 建站。

.mod-gallery .gallery-photo-items{text-align:center;}

查看完整組圖

上一頁

下一頁