DedeCMS數據負載性能優化方案簡單幾招讓你提速N倍

前文介紹了DedeCMS欄目列表頁實現完美分頁的方法,避免了大部分重複欄目標題對搜索引擎的影響,對SEO更有利。今天,分享一下DedeCMS數據負載性能優化的方法。

接觸織夢也有三年多時間了,對它可謂是又愛又恨。它的模板簡單易用,標籤調用更是靈活,二次開發也非常方便。可是,站點數據龐大起來的時候(30多 萬條),後臺就會變得異常緩慢,生成HTML也很吃力,毫不誇張的說,頭髮都等白了。這不禁讓我對DedeCMS數據負載性能產生了置疑?

DedeCMS數據負載性能優化方案

查閱了相關資料,結合自身站點實際,還是總結出了一套不錯的DedeCMS數據負載性能優化方案。廢話不說,直接進入正題。

1)數據分表存儲 減輕數據單表壓力

自織夢V5版本起,DedeCMS開始分表存儲以提高系統負載性能,確實在一定程度上緩解了數據壓力。現在最新的DedeCMS V5.7版本已經出來了,據官方介紹,V5.7調整了緩存處理,應付50萬以內數據沒問題,至於真實性無從考究。如果官方陳述屬實的話,對於中小型站長來 說確實是件好事,正常百萬級內數據也不用過多擔心了。

分表存儲如何操作?

如果你只是個人或企業等小型站點,數據量也就撐死上萬,那完全不用考慮分表存儲,DedeCMS完全可以勝任。分表操作很簡單,你只需要直接進入後 臺,新建模型,然後設置一個欄目對應一個模型。個人建議一個大的頻道欄目及子欄目對應一個模型,這要根據你的欄目可能存儲的數據來做計劃,考慮實際一點的 分表方案。

2)修改系統參數 arclist標籤另類優化

在DedeCMS V5版本中,官方其實已經做了極力優化,引入了緩存機制。其實影響HTML生成速度的罪魁禍首還是模板中的arclist標籤,很多站長喜歡用 arclist標籤來調用最新、熱門、推薦、頭條等文章列表,但是arclist標籤每次都帶着一大堆條件去主表中查詢,可能還會關聯附加表,對一次性生 成大量文章來說,只是重複使用arclist標籤對數據庫重複查詢罷了,自然會花去大量時間。現在DedeCMS新的版本中,生成HTML時arclist標籤會直接調用緩存數據,省去arclist標籤重複查詢數據庫的時間,頓時讓上述工作變得輕鬆起來,生成速度得到提升也是必然的。你只用在系統參數->性能選項中,找到arclist標籤調用緩存(cfg_index_cache)(0 不啓用,大於0值爲多少秒),根據自身實際需求調整緩存調用時間。

其實,還有一種解決辦法,就是麻煩了一些,但是對性能提升是非常顯著的。arclist 標籤調用緩存雖說一定程度上提高了HTML生成速度,但是還是需要對arclist緩存進行判斷,如果能把這部分時間也省去,那是不是會更快呢?答案是肯 定確定以及雙重否定。我們可以通過freelist(自由列表)功能事先生成最新、熱門、推薦、頭條等文章列表頁面,然後用include標籤直接引入到 模板裏,標籤格式爲:{dede:include file=’文章列表頁面文件名稱’ ismake=’ no’/}。如果你的站長數據很龐大,服務器硬件配置也一般的話,何不嘗試一下呢?

另外,系統參數-核心設置裏默認的關鍵字替換功能(cfg_keyword_replace)是開啓的,如果文章是採集過來的,還是關閉的好,有很多關鍵字都毫無意義,甚至會有亂碼導致生成出錯,關掉此功能對提高系統性能是有一定幫助的。

3)數據庫表索引優化 性能大幅提升

爲什麼要對DedeCMS數據庫表索引進行優化呢?很簡單,在Mysql中,索引無疑是最有效的加快查詢的工具了,一個合理的索引組合會極大地提升 你的查詢效率和系統性能。言歸正傳,你可以通過phpmyadmin或是一個叫Navicat for MySQL的軟件(推薦)來管理你的數據庫。

分析DEDECMS數據表信息,不難發現,所有的文章數據是存儲在dede_archives和dede_arctiny,以及對應的 dede_addonarticle附加表中的。生成HTML時,sql查詢主要圍繞這三張表來的。個人認爲,凡是要排序的字段和查詢條件的字段及文檔 ID都要建立索引,如果一個沒有建立,將會嚴重影響MySQL的查詢效率,最終導致生成速度變慢。DEDECMS數據表索引建立方法如下:

a)dede_archives,是文章的主表,存儲文章標題、關鍵 字、描述、發佈時間等信息,10萬數據的表大小可能在30MB左右,也是我們優化的重點。你需要建立的索引字段有,id、channel、 pubdate、sortrank、ismake、typeid、mainindex、lastpost;其中,像系統默認的mainindex和 lastpost這兩個組合索引,個人認爲存在意義不大,可以刪除,自己掂量。需要注意的是,click字段,是文檔的點擊數,此字段更新頻率,建立索引 後會對系統維護帶來一定壓力,另外也有人說頻繁更新的建立索引會容易導致數據庫損壞,也無從查證。個人建議click字段保留,不建立索引。

爲DedeCMS數據表建立索引

b)dede_arctiny,這個表比較小,10萬數據的表大小不到5MB,建議不建立索引,可以將自帶的刪除掉,或者只保留sortrank索引。

c)dede_addonarticle,是文章附加表,主要是用來存儲文章內容的,不作索引考慮。

以上索引成功建立後,再測試下你的HTML生成速度,是不是讓你精神一振呢?

4)搭建勝過Apache十倍的高併發Web服務器 Nginx + PHP(FastCGI)

Web服務器的重要性不需多言,對提升網站性能有着直接影響。在PHP開發中,最常用的環境莫過於在 LAMP:Linux+apache+mysql+php了,在windows下有 WAMP:Windows+apache/iis+mysql+php,我的WEB站點也是在這種環境下開發的。Nginx + PHP(FastCGI)無疑是你最好的選擇,在Windows和Linux下都可以安裝,只是Windows下的Nginx表現要遠遠遜色於Linux。

DedeCMS系統運行是依賴PHP+MYSQL環境的,所以說一個運行快、資源消耗小的Web服務器對提升系統性能有多重要。如果條件允許的條件,還是推薦下Nginx + PHP(FastCGI)這種WEB服務器環境。

以上就是DedeCMS數據負載性能的優化方案,針對的是有獨立WEB服務器或控制權限的站長,至於虛擬主機想 達到這個速度還是很費勁的,但是也可以作爲DedeCMS性能優化的一個參考依據,自己琢磨琢磨了。當然,如果有更好的提高DedeCMS數據負載性能的 辦法,還希望分享下。其實,正常情況下(不包括採集),一般站點數據量也都有限,20萬就很了不起了吧?我想,以上的DedeCMS優化方案足以解決了。 真到了百萬級、千萬級數據的時候,也不是一般站長需要考慮的事了。

DIV+CSS佈局之瀏覽器兼容問題及CSS Hack使用方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章