眾所周知。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即可。