為什么動網(wǎng)要比動易快得多?_動易Cms教程
問題:拿10萬文章的動易系統(tǒng)和10萬主題的動網(wǎng)論壇相比,都是采用動態(tài)頁面,單就資源占用來說,相同的服務(wù)器動網(wǎng)可以迅速訪問,而用動易的服務(wù)器早就死機了。假如動易不重視這個問題會很危險的。后果會很嚴(yán)重。
解答:讓我們來分析一下同樣的數(shù)據(jù)量時,動網(wǎng)論壇為什么快,而動易相當(dāng)占資源。
1、10萬主題的論壇的數(shù)據(jù)量,看起來很大,但因為90%的貼子可能只有幾個字,查詢時與10萬篇平均1000字的文章比起來,所占用內(nèi)存等會相差多大?另外,動網(wǎng)的前臺顯示基本上是沒有顯示內(nèi)容的,而動易的顯示是可以自定義顯示內(nèi)容,許多網(wǎng)站也正使用了這一點,這一項功能比起來,動易就根本不可能達(dá)到動網(wǎng)的“快”,因為完全是不同的應(yīng)用,不同的數(shù)據(jù)模式,不同的設(shè)計思想。
2、再來看每個頁面。動易比動網(wǎng)慢的頁面只有兩種頁面:首頁和大類欄目頁。
先看首頁,動網(wǎng)的首頁主體部分只顯示了一級欄目的信息,這只需要一次查詢即可,只相當(dāng)于動易首頁的欄目導(dǎo)航或頂部欄目菜單中的一級欄目部分,動易相比較而言,在首頁不僅顯示了一級欄目,所有的欄目都顯示了。另外最重要的是,動易首頁的每個欄目都還要查詢數(shù)據(jù)庫,以顯示每個欄目的文章列表。假如是在網(wǎng)站首頁,這些欄目還可能跨頻道,這樣為了得到正確的路徑,還要查詢相應(yīng)的頻道設(shè)置等。這樣多的功能,還要求達(dá)到論壇首頁一樣的速度?同樣在首頁,公告、友情鏈接、調(diào)查、統(tǒng)計等其他功能,動易一項不少,這些都需要查詢數(shù)據(jù)庫,當(dāng)然也要消耗一些資源。首頁是大家訪問最多的頁面,就算是同樣的數(shù)據(jù),因為動易相對來說,因為要顯示每個欄目的文章列表,這樣每個欄目要多一次查詢,20個欄目就要多20次查詢,當(dāng)然會比論壇首頁慢多了。假如把動易首頁的顯示樣式改為論壇一樣,動易至少可以提速幾十倍。但改成論壇的首頁樣式,還是網(wǎng)站的首頁嗎?
再看大類欄目頁,動網(wǎng)論壇仍是只顯示子欄目的信息,只需一個查詢即可,只相當(dāng)于動易大類欄目頁的子欄目導(dǎo)航功能。動易在大類欄目頁是采用分類顯示的,所以同樣需要對每個子欄目查詢,以顯示每個子欄目的文章列表。這樣,當(dāng)大類下有20個子欄目時,除了一次查詢子欄目外,還要20次查詢每個子欄目的文章列表。這樣,當(dāng)然又要比論壇慢上幾十倍了。
然后看子欄目頁面,這里動易和動網(wǎng)的速度基本上是一樣的。因為都只有一次查詢,采用的都是聯(lián)合查詢,采用了同樣的分頁算法。但論壇是不顯示貼子內(nèi)容的,而有些使用動易的網(wǎng)站的列表是“每篇文章的標(biāo)題下面再顯示文章的內(nèi)容簡介”,這樣肯定要比論壇多占用許多資源了。
再看搜索結(jié)果頁,論壇默認(rèn)的是在某個欄目中進(jìn)行搜索,而動易默認(rèn)是全站搜索,這里可想而知,速度方面又不在一個檔次上。
最后,我想和大家說的是,動易在這三年的發(fā)展過程,在程序代碼和速度算法上,從未停止過優(yōu)化的進(jìn)程。我們已經(jīng)盡我們所能,把代碼和算法優(yōu)化到最好的程序。舉一些例子吧:
1、1.0版和2.0版是兩級分類,3.0版以后是無限級分類,功能加強了,但也帶來一個速度方面的大影響。懂點程序的人應(yīng)該都知道,在兩級分類時,我要查詢屬于某個大類的文章時,只需簡單的一句查詢代碼(select * from PE_Article where BigClassID=2)即可。到了無限級欄目,則要針對某個大類,先查詢出他下面的所有小類(select ClassID from PE_Class where ParentID=2),這樣得到一個欄目ID數(shù)組(如2,6,8,11,35,87),然后必須這樣查詢(select * from PE_Article where ClassID in (2,6,8,11,35,87),才能得到這個大類的所有文章,這樣在性能上就下降了不止10倍。這兩個查詢也可以用一個查詢來實現(xiàn)(select * from PE_Article where ClassID in (select ClassID from PE_Class where ClassID=2 or ParentID=2),但性能是差不多的。其實這里還簡化了邏輯,因為并沒有考慮三級或四級以上的欄目結(jié)構(gòu),沒有考慮這個大類欄目下有三四級子欄目的情況。所以性能方面還要下降。在2005版中,我們通過事先把屬于此欄目的所有子欄目的ID放到一個字段中,這樣就解決了了這個問題,使得無限級欄目的性能與兩級欄目的性能相差不是太大。從而使得首頁的執(zhí)行速度提升了10倍不止,欄目結(jié)構(gòu)越復(fù)雜,性能提升越明顯。
- MAC錯誤的解決方法
- 如何屏蔽動易后臺導(dǎo)航里的某個功能菜單?
- 動易.NET版本留言自動選定欄目方法
- 動易SiteFactoty整合Discuz!NT3.0
- 在任意位置獲取根節(jié)點ID標(biāo)簽
- 如何開啟SiteWeaver6.8的支持,反對功能
- Windows 2008安裝動易.NET系統(tǒng)之四----動易系統(tǒng)安裝篇
- Windows 2008安裝動易.NET系統(tǒng)之三----數(shù)據(jù)庫篇
- Windows 2008安裝動易.NET系統(tǒng)之二----IIS、目錄環(huán)境配置篇
- 數(shù)據(jù)庫修復(fù),SQL Server 2005內(nèi)部操作不一致的處理
- 如何安裝動易.net程序權(quán)限配置
- 為什么提示對Windows系統(tǒng)文件夾下的Temp目錄沒有訪問權(quán)限?
- 相關(guān)鏈接:
- 教程說明:
動易Cms教程-為什么動網(wǎng)要比動易快得多?
。