前文介紹了DedeCMS欄目列表頁實現完美分頁的方法,避免了大部分重複欄目標題對搜索引擎的影響,對SEO更有利。今天,分享一下DedeCMS數據負載性能優化的方法。 php
接觸織夢也有三年多時間了,對它可謂是又愛又恨。它的模板簡單易用,標籤調用更是靈活,二次開發也很是方便。但是,站點數據龐大起來的時候(30多 萬條),後臺就會變得異常緩慢,生成HTML也很吃力,絕不誇張的說,頭髮都等白了。這不由讓我對DedeCMS數據負載性能產生了置疑? css
查閱了相關資料,結合自身站點實際,仍是總結出了一套不錯的DedeCMS數據負載性能優化方案。廢話不說,直接進入正題。 mysql
1)數據分表存儲 減輕數據單表壓力 sql
自織夢V5版本起,DedeCMS開始分表存儲以提升系統負載性能,確實在必定程度上緩解了數據壓力。如今最新的DedeCMS V5.7版本已經出來了,據官方介紹,V5.7調整了緩存處理,應付50萬之內數據沒問題,至於真實性無從考究。若是官方陳述屬實的話,對於中小型站長來 說確實是件好事,正常百萬級內數據也不用過多擔憂了。 數據庫
分表存儲如何操做? apache
若是你只是我的或企業等小型站點,數據量也就撐死上萬,那徹底不用考慮分表存儲,DedeCMS徹底能夠勝任。分表操做很簡單,你只須要直接進入後 臺,新建模型,而後設置一個欄目對應一個模型。我的建議一個大的頻道欄目及子欄目對應一個模型,這要根據你的欄目可能存儲的數據來作計劃,考慮實際一點的 分表方案。 windows
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字段保留,不創建索引。
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優化方案足以解決了。 真到了百萬級、千萬級數據的時候,也不是通常站長鬚要考慮的事了。