眾所周知。KesionCMS V4.0無論從功能上,還是從效能上都有了質的飛越。不再是以往版本1秒僅能產生1篇文章的系統了。但近期也發現有部分使用者提到速度並沒有多大提高。現在我大致給大家做個總結。
1、標籤調用不合理
A、自訂靜態標籤(影響最大)
有些使用者為了方便,大量使用了自訂靜態標籤。甚至將整個頁面模板做成一個靜態標籤調用。更可怕的是在自訂靜態標籤裡插入大量的系統函數標籤,自訂SQL標籤等。
經測試如果在自訂靜態標籤裡插入系統函數標籤和自訂sql標籤,系統的產生速度將大打折扣.原因如下:原本只需讀取資料庫進行一次的標籤替換工作,而藉助自訂靜態標籤無形中卻需要最少兩次的標籤替換工作。所以效能下降。
經以上分析:解決方案是盡量少用或不用自訂靜態標籤。絕對不在自訂靜態標籤裡插入系統函數標籤和自訂SQL標籤。
B、自訂SQL標籤
用過自訂SQL標籤的朋友都知道,一個SQL標籤對應一條SQL查詢語句。SQL的構造合理與否直接影響到系統的效能。
舉例如下:
語句一:Select * from ks_article where tid in('欄目ID') order by id desc
語句二:Select top 10 id,title,AddDate From KS_Article Where Tid='欄目ID' order by id desc
並假設迴圈體都如以下:
複製代碼 代碼如下:[loop=10]
<li>
<ahref="{$Field(ID,GetInfoUrl,1,1)}" target="_blank">{$Field(Title,Text,5,...,0,)}</a>({$Field(Adddate,Date,YYYY年MM月DD日)})
</li>
[/loop]
以上程式碼片段中。顯然運行最終效果都一樣,但語句二的執行效率將優於語句一。當你的資料量越多越明顯。這裡就不詳情說明原因了,有興趣的朋友可以參考:http://www.cnblogs.com/xhp5678/archive/2006/07/07/445206.html, http://www.cnblogs.com/oec2003/archive/2007/05/09/740048.html
C.系統函數標籤
KesionCMS系統函數標籤作為入門級標籤,所有代碼都整合在核心代碼的函數內。已在語句上做了大量的最佳化工作了。原則上使用者在使用上也無需注意什麼了。但如果你稍微留意,你就會發現很多標籤都支援通用。細心的朋友會發現標籤屬性裡的”所性欄目”一欄中:分別有”當前欄目(通用)”、”不指定欄目”等。這時你如果指定為當前欄目(通用),那麼你建的這個標籤在本模型裡就是通用標籤了。這樣,你也就無需建大量的標籤。從頁減少資料庫的標籤替換次數.。
2、欄目劃分不合理
有些使用者欄目劃分極其不合理,一個欄目下的文章居然達到幾萬條資料。對於欄目下文章較多,建議將欄目進行細分。V4.0引進了模型,也可以通過自建模型,將資料分布到使用者建的資料表。從而有效減少了單個資料表的壓力.
3、沒有定期對資料庫進行維護
使用Access資料庫的使用者請週期性對資料庫進行壓縮修複,SQL資料庫的使用者可以週期性清除日誌,壓縮等.週期性維護資料庫你也可以發現系統的效能會有所提高.
什麼時候標籤使用Ajax輸出
KesionCMS V4.0獨創引入標籤ajax輸出功能,但有些使用者對此並不瞭解,不清楚的朋友可以在此瞭解http://tech.163.com/05/0908/17/1T55SUPP00091K8Q.html
1、終級列表標籤(分頁標籤)
當網站的欄目資訊不允許別人採集時,可以輸用ajax輸出.
當你的欄目下文章超過1000篇時,可以考慮ajax輸出。原因如下:假設你每頁顯示是20篇。那麼每次產生這個欄目頁就需同時產生1000/20=50個靜態頁面。假如有20個欄目,按全部產生的話,一瞬間就要同時產生50*20=1000個靜態頁面,這時伺服器佔用資源就會急劇增大.造成發布欄目頁很慢。那如果是ajax輸出,每個欄目無論文章數多少,都輸產生一個靜態頁面。其實ajax是無重新整理動態調用的。當你用AJAX輸出時,你在後台添加的新的內容,甚至不需要再產生欄目頁面,因為他會動態更新。
2、最新更新,點擊排行,推薦資訊等調用
當你的內容頁面已產生靜態頁面後,你是否曾經因為內容頁不能自動更新點擊排行,不能自動更新最新添加的文章,不能自動更新推薦資訊而煩惱呢?KesionCMS V4.0引進了ajax輸出,徹底解決了這個問題了。您只需將標籤輸出格式選擇ajax即可。