很多同學(xué)都說 WordPress 很慢,前面我發(fā)布的插件 WPJAM Debug,可以在頁腳顯示當(dāng)前頁面有多少條 SQL 查詢,頁面生成花了多少時(shí)間,并且把 SQL 按照?qǐng)?zhí)行順序和按照耗時(shí)列出,可以通過這樣的方式幫你分析 WordPress 哪里慢。
但是 WPJAM Debug 只是分析 WordPress 效率,具體涉及到 WordPress 性能優(yōu)化,還需要自己動(dòng)手來做,今天我就講講這一段時(shí)間來我工作的網(wǎng)站:App每日推送(也是基于 WordPress 構(gòu)建)是怎么優(yōu)化的。
關(guān)于App每日推送
App每日推送是基于 WordPress 構(gòu)建的 iPhone/iPad 應(yīng)用推薦服務(wù),這是目前我做過最復(fù)雜的 WordPress 網(wǎng)站,有多重篩選:可以通過設(shè)備(iPhone/iPad/通用),價(jià)格(免費(fèi)/限免/收費(fèi))分類(游戲/應(yīng)用/工具等等)選擇自己喜歡的 App,用戶動(dòng)態(tài),討論區(qū),消息通知,積分,積分兌換等等功能。
目前整個(gè)網(wǎng)站每個(gè)月的流量已經(jīng)超過 300W,但是網(wǎng)站目前的速度很快,大部分頁面在 0.1 秒內(nèi)生成,并且只有 2 條 SQL 查詢,比如首頁:2 queries in 0.063 seconds。
那么我們是怎么進(jìn)行優(yōu)化的?
服務(wù)器優(yōu)化
首先要選擇一個(gè)靠譜的主機(jī)托管商,在國內(nèi)這個(gè)很多時(shí)候讓你抓狂,但是只要努力還是可以的,第二選擇 BGP 或者多線機(jī)房,讓全國用戶訪問都能有不錯(cuò)的速度,第三選擇獨(dú)立的服務(wù)器,再不行,也要選擇 VPS,因?yàn)槟銢]有服務(wù)器的 Root 權(quán)限很多東西是無法進(jìn)行的,個(gè)人博客可以考慮 Media Temple 這類的 VPS 主機(jī)。
服務(wù)器問題解決之后,服務(wù)器可以做如下優(yōu)化:
1. Web 服務(wù)器選擇使用 Nginx:效率和并發(fā)比 Apache 高,系統(tǒng)資源消耗低。
2. MySQL 設(shè)置 MySQL Query Cache,可以保存保存查詢結(jié)果,同樣的查詢不再從數(shù)據(jù)庫檢索,對(duì)速度有很大的提升。
3. 使用 eAccelerator 加快 PHP 腳本的執(zhí)行效率:把經(jīng)過編譯后的 PHP 代碼緩存到共享內(nèi)存中,并在用戶訪問的時(shí)候直接調(diào)用從而起到高效的加速作用。
WordPress 程序優(yōu)化
WordPress 插件一定要只用必須的,另外盡量能夠全部插件自己寫,如果不能全部自己寫,也要對(duì)第三方插件按照自己需求進(jìn)行改寫,
WordPress 主題代碼的質(zhì)量一定要保證,盡量使用模板函數(shù),比如 get_the_terms 和 wp_get_object_terms 這兩個(gè)函數(shù),功能基本一樣,但是get_the_terms 直接從緩存中取數(shù)據(jù),無查詢,而 wp_get_object_terms 每次都從數(shù)據(jù)庫中取數(shù)據(jù),不用說,肯定第一個(gè)效率更好。
WordPress 緩存
關(guān)于 WordPress 緩存我已經(jīng)做過詳細(xì)的總結(jié),這里就不再累贅,具體涉及到 App每日推送,由于動(dòng)態(tài)網(wǎng)站的特性,注冊用戶比較多,不適合 WP Super Cache 這樣的靜態(tài)緩存,對(duì)硬盤讀寫太多,討論區(qū)又無法緩存,我們使用 Memcached 和 Batcache 搭配的內(nèi)存緩存模式:
對(duì)于已登陸的用戶,Memcached 會(huì)把 Object Cache 的對(duì)象存到內(nèi)存里面,服務(wù)器的內(nèi)存足夠大,讀取和存儲(chǔ)速度也夠快,并且內(nèi)存緩存命中率也大于 93%。另外我們 WordPress 程序經(jīng)過優(yōu)化,每個(gè)頁面的查詢一般在 2 條左右,所以整個(gè)網(wǎng)站效率很高。
對(duì)于未登錄的用戶,Batcache 會(huì)把整個(gè)頁面當(dāng)做一個(gè)對(duì)象存到內(nèi)存里面,未登錄用戶訪問的時(shí)候,整個(gè)頁面從內(nèi)存中取出,速度奇快。
WordPress 性能優(yōu)化總結(jié)
選擇好的服務(wù)器和托管商,對(duì) WordPress 程序進(jìn)行優(yōu)化,并且做好緩存,WordPress 效率其實(shí)很高的,加上 WordPress 本身的靈活性和功能強(qiáng)大,WordPress 作為各種建站絕對(duì)是非常不錯(cuò)的選擇。
另外這里還有一份我總結(jié)的關(guān)于 WordPress 性能優(yōu)化的 PPT: http://vdisk.weibo.com/s/2QR2M,內(nèi)容略有補(bǔ)充。