新聞發(fā)布
管理系統(tǒng)WordPress 很慢?
很多博主都會感覺 WordPress 很慢?作為全世界常用的建站和博客系統(tǒng) WordPress 來說,在性能設(shè)計上肯定不會有太大的問題,WordPress 開發(fā)團隊也肯定也考慮到這個問題。
那么 WordPress 效率問題主要是出在哪里呢?根據(jù)我多年 WordPress 建站和維護的經(jīng)驗,很多性能的問題都是 WordPress 使用不當造成的,比如安裝太多效率低下的插件,使用代碼質(zhì)量低下的主題,沒有正確處理 WordPress 的緩存等等,所以提高 WordPress 性能,就要從這些方面入手。
今天就給大家講講自己多年總結(jié)的 WordPress 優(yōu)化經(jīng)驗和技巧:
動靜態(tài)分離
不管 WordPress 博客還是其他 CMS 建的站點,優(yōu)化的第一步一定是動靜態(tài)分離,這也是你看到新浪,騰訊等門戶,他們圖片的域名和網(wǎng)站的域名不是同一個的原因。
網(wǎng)站的靜態(tài)文件一般有兩種:第一種是網(wǎng)站的 CSS,JS 和一些主題的常用背景圖片和按鈕文件,這些圖片如果網(wǎng)站不進行改版或者其他改動,基本上是不會修改的,第二種是每天更新的網(wǎng)站內(nèi)容中上傳的圖片或者附件,這些圖片文件也是基本不會改動的。
解決好靜態(tài)文件存儲和加速,網(wǎng)站性能就首先能得到基本的保證了,WordPress 構(gòu)建的網(wǎng)站和博客也是一樣的。對于這些靜態(tài)文件來說,好的解決方案永遠是使用 CDN 網(wǎng)絡(luò)進行加速,這樣服務(wù)器的壓力將大大降低,因為訪問頁面只有當前頁面是在自己的服務(wù)器上,其他所有圖片, JS 和 CSS 都是從 CDN獲取的。
從使用便捷性和性價比角度來說,個人推薦 WordPress 博客方便使用的云智存儲,我也寫了一個七牛鏡像存儲的 WordPress 插件,讓你可以一鍵實現(xiàn) WordPress 博客靜態(tài)文件 CDN 加速。
服務(wù)器優(yōu)化
優(yōu)化好靜態(tài)文件之后,就要開始對網(wǎng)站的動態(tài)內(nèi)容進行優(yōu)化,優(yōu)化動態(tài)內(nèi)容,首先要有一個穩(wěn)定網(wǎng)絡(luò)環(huán)境,穩(wěn)定的主機供應(yīng)商和服務(wù)器性能的優(yōu)化。
選擇一個靠譜的主機托管商,個人推薦 BGP 或者多線機房,讓全國用戶訪問都能有不錯的速度,然后盡量選擇獨立的服務(wù)器,再不濟,也得 VPS, 因為你沒有服務(wù)器的 Root 權(quán)限很多東西是無法進行的。這里推薦:美團云。
服務(wù)器問題解決之后,服務(wù)器可以做如下優(yōu)化:
MySQL 設(shè)置 MySQL Query Cache,可以保存保存查詢結(jié)果,同樣的查詢不再從數(shù)據(jù)庫檢索,對速度有很大的提升。
PHP 開啟 OPCache:把經(jīng)過編譯后的 PHP 代碼緩存到共享內(nèi)存中,并在用戶訪問的時候直接調(diào)用從而起到高效的加速作用。
安裝 Memcached 和 PHP Memcached 擴展:使用 Memcached 來緩存 WordPress 數(shù)據(jù)。
WordPress 緩存
要徹底明白和搞懂 WordPress 性能優(yōu)化,首先要理解 WordPress 緩存機制,WordPress 默認是一種叫做 WordPress Object Cache 的對象緩存機制,它是把需要緩存的內(nèi)容按照 Key-Value 這樣的模式進行緩存(和 No-SQL 的 key-value 的有點類似),當然它還支持按照 Group 來劃分和避免緩存的內(nèi)容沖突。
所以基礎(chǔ)的 WordPress 緩存插件就是,把 WordPress 產(chǎn)生的 Key-Value 存起來,如果是使用 Memcached,就是存到內(nèi)存,如果使用 Flie 就是存到硬盤中,當然高級的 WordPress 插件還能做更多,比如 WP Super Cache把整個頁面緩存到硬盤中,下次直接訪問靜態(tài)的 HTML 文件,讓服務(wù)器直接繞過 PHP,節(jié)約 CPU 時間。 Batcache 會把整個頁面當做一個對象存到內(nèi)存里面。我個人推薦使用 Memcached 和 Batcache 進行緩存。
對于已登陸的用戶,Memcached 會把 WordPress 的對象存到內(nèi)存里面,服務(wù)器的內(nèi)存足夠大,讀取和存儲速度也夠快,并且內(nèi)存緩存命中率也大于 97%。另外我們 WordPress 程序經(jīng)過優(yōu)化之后,每個頁面的查詢一般在 2 條左右,所以整個網(wǎng)站效率很高,首頁甚至做到 0 SQL,頁面生成只需要 0.0013秒。
對于未登錄的用戶,Batcache 會把整個頁面當做一個對象存到內(nèi)存里面,未登錄用戶訪問的時候,整個頁面從內(nèi)存中取出,速度奇快。
WordPress 程序優(yōu)化
WordPress 程序優(yōu)化是基于 WordPress Object Cache 的機制對 WordPress 插件和主題進行優(yōu)化,主要經(jīng)驗有以下幾點:
只使用必須的 WordPress 插件,安裝太多的 WordPress 插件很容易引起性能問題。
從正規(guī)站點下載 WordPress 主題,這樣下載的主題才能保證質(zhì)量和安全。
WordPress 主題和插件盡量使用模板函數(shù),因為 WordPress 模板函數(shù)如果可能都已經(jīng)做好了 WordPress Object Cache。
比如 get_the_terms 和 wp_get_object_terms 這兩個函數(shù),功能基本一樣,但是 get_the_terms 直接從對象緩存中取數(shù)據(jù),無查詢,而 wp_get_object_terms 每次都從數(shù)據(jù)庫中取數(shù)據(jù)。WordPress 插件和主題如果一定要直接查詢數(shù)據(jù)庫,請做好 Object Cache,將查詢的結(jié)果使用
wp_cache_set
存到 Object Cache 中,下次直接使用wp_cache_get
獲取。
選擇好的服務(wù)器和托管商,對 WordPress 程序進行優(yōu)化,并且做好緩存,WordPress 效率其實很高的,加上 WordPress 本身的靈活性和功能強大,WordPress 作為各種建站絕對是非常不錯的選擇,所以我一直使用 WordPress 建站。