Wordpress以其強大的功能和豐富的擴展性,贏得了眾多的使用者。但一直以來,Wordpress的低性能也是廣大Wordpress郁悶的事。但是,或許因為大多數的Wordpress使用者是用來搭建小型個人博客,所以對性能也并不看重。
我使用Wordpress搭建了一個CMS網站,現在的文章數達到了3萬,數據庫達到了100M。此時,Wordpress的低性能體現出來了,極大地影響了我的網站訪問。有人認為,盡量減少插件、使用簡單的主題可以加快Wordpress的速度,但我認為,犧牲功能來換取性能,是不值得的。為此,我花了些時間對Wordpress作了優化,在保留足夠的功能的前提下,盡量加快Wordpress的運行速度。
先說一下我的VPS服務器配置:
CPU:單核Intel(R) Xeon(R) CPU L5420 @ 2.50GHz(單核CPU運行Wodpress可真夠吃力)
內存:256M
硬盤大小:對WP性能沒影響,就不說了
Wordpress的低性能體現在兩方面:一是加載的文件、代碼太多。下面具體說說針對這兩方面的優化;一是數據庫設計不合理,數據庫查詢次數太大;
針對Wordpress加載文件太多的優化,我在服務器上安裝了eAccelerator緩存,把PHP文件都預先加載到內存里,再讀取,就快多了。另外,在Wordpress前臺,我去掉了語言包,我已經把中文都寫到主題里了,所以前不幾乎不需要語言包了。實踐證明,去掉語言包,能省至少30%的頁面執行時間!
針對數據庫的優化,大家首先想到的可能是使用DB Cache Reloaded插件或者Memcached緩存。但是這兩個方法我都不用。我的網站放在一臺只有256M內存的VPS上,再也沒有多余的內存使用Memcached了。不知是什么原因,我在多臺服務器上測試了Memcached,啟用Memcached反面比沒有啟用Memcached,頁面執行時間還要慢。另外,啟用了mysql里的query_cache功能,這同樣可以優化mysql查詢。
我對主題作了修改,使用“區塊緩存”來減少數據庫查詢。Wordpress運行一個頁面,頭部、中間、側邊欄、底部,幾乎都要讀取數據庫,而往往只有中間部分是每個頁面不同的,其他部分都相同。例如對于日志頁,如下圖所示,1、2、4、5這幾部分,在每篇日志里都是一樣的,所以,可以把這幾部分緩存起來,不用每次都查詢數據庫。
通過以上優化,日志頁面的速度已經不錯了,可是,分類頁面速度還是很慢。這是因為分類頁用了多個聯合并且帶有IN的SQL查詢,效率本身就低,再加上我的服務器配置低,所以就很慢了。這也是因為Wordpress的數據庫設計不合理,WP把日志的標題、正文全部存儲在同一張表里了,我的wp_posts表就60M大小了,每次select *產生的數據量都很大。為此,我新建了一個表,該表只存儲日志的標題、作者、日期等信息,不存儲正文。表的體積大大減小,大約只有原wp_posts表的十分之一,查詢就快了很多。
在服務器優化方面,我使用lighttpd來代替龐大的apache,既節省內存,也讓wordpress運行得更快。另外,開啟了lighttpd的expires功能,把圖片、JS、CSS等文件緩存在客戶端的瀏覽器里,不用每次都從服務器下載這些文件。還有,啟用gzip壓縮功能,減少傳輸的頁面文件大小。
好了,以上就是我的優化方法,大家可以訪問我的網站,體驗一下速度 www.zuowenba.com
下一篇 php目錄操作函數總結