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