全面優(yōu)化V4.0及AJAX標(biāo)簽使用技巧
更新時(shí)間:2007年09月22日 11:04:43 作者:
眾所周知。KesionCMS V4.0無(wú)論從功能上,還是從性能上都有了質(zhì)的飛越。不再是以往版本1秒僅能生成1篇文章的系統(tǒng)了。但近期也發(fā)現(xiàn)有部分用戶(hù)提到速度并沒(méi)有多大提高?,F(xiàn)在我大致給大家做個(gè)總結(jié)。
1、標(biāo)簽調(diào)用不合理
A、自定義靜態(tài)標(biāo)簽(影響最大)
有些用戶(hù)為了方便,大量使用了自定義靜態(tài)標(biāo)簽。甚至將整個(gè)頁(yè)面模板做成一個(gè)靜態(tài)標(biāo)簽調(diào)用。更可怕的是在自定義靜態(tài)標(biāo)簽里插入大量的系統(tǒng)函數(shù)標(biāo)簽,自定義SQL標(biāo)簽等。
經(jīng)測(cè)試如果在自定義靜態(tài)標(biāo)簽里插入系統(tǒng)函數(shù)標(biāo)簽和自定義sql標(biāo)簽,系統(tǒng)的生成速度將大打折扣.原因如下:原本只需讀取數(shù)據(jù)庫(kù)進(jìn)行一次的標(biāo)簽替換工作,而借助自定義靜態(tài)標(biāo)簽無(wú)形中卻需要最少兩次的標(biāo)簽替換工作。所以性能下降。
經(jīng)以上分析:解決方法是盡量少用或不用自定義靜態(tài)標(biāo)簽。絕對(duì)不在自定義靜態(tài)標(biāo)簽里插入系統(tǒng)函數(shù)標(biāo)簽和自定義SQL標(biāo)簽。
B、自定義SQL標(biāo)簽
用過(guò)自定義SQL標(biāo)簽的朋友都知道,一個(gè)SQL標(biāo)簽對(duì)應(yīng)一條SQL查詢(xún)語(yǔ)句。SQL的構(gòu)造合理與否直接影響到系統(tǒng)的性能。
舉例如下:
語(yǔ)句一:Select * from ks_article where tid in('欄目ID') order by id desc
語(yǔ)句二:Select top 10 id,title,AddDate From KS_Article Where Tid='欄目ID' order by id desc
并假設(shè)循環(huán)體都如以下:
[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]
以上代碼段中。顯然運(yùn)行最終效果都一樣,但語(yǔ)句二的執(zhí)行效率將優(yōu)于語(yǔ)句一。當(dāng)你的數(shù)據(jù)量越多越明顯。這里就不詳情說(shuō)明原因了,有興趣的朋友可以參考:http://www.cnblogs.com/xhp5678/archive/2006/07/07/445206.html, http://www.cnblogs.com/oec2003/archive/2007/05/09/740048.html
C.系統(tǒng)函數(shù)標(biāo)簽
KesionCMS系統(tǒng)函數(shù)標(biāo)簽作為入門(mén)級(jí)標(biāo)簽,所有代碼都集成在核心代碼的函數(shù)內(nèi)。已在語(yǔ)句上做了大量的優(yōu)化工作了。原則上用戶(hù)在使用上也無(wú)需注意什么了。但如果你稍微留意,你就會(huì)發(fā)現(xiàn)很多標(biāo)簽都支持通用。細(xì)心的朋友會(huì)發(fā)現(xiàn)標(biāo)簽屬性里的”所性欄目”一欄中:分別有”當(dāng)前欄目(通用)”、”不指定欄目”等。這時(shí)你如果指定為當(dāng)前欄目(通用),那么你建的這個(gè)標(biāo)簽在本模型里就是通用標(biāo)簽了。這樣,你也就無(wú)需建大量的標(biāo)簽。從頁(yè)減少數(shù)據(jù)庫(kù)的標(biāo)簽替換次數(shù).。
2、欄目劃分不合理
有些用戶(hù)欄目劃分極其不合理,一個(gè)欄目下的文章居然達(dá)到幾萬(wàn)條數(shù)據(jù)。對(duì)于欄目下文章較多,建議將欄目進(jìn)行細(xì)分。V4.0引進(jìn)了模型,也可以通過(guò)自建模型,將數(shù)據(jù)分布到用戶(hù)建的數(shù)據(jù)表。從而有效的減少了單個(gè)數(shù)據(jù)表的壓力.
3、沒(méi)有定期對(duì)數(shù)據(jù)庫(kù)進(jìn)行維護(hù)
使用Access數(shù)據(jù)庫(kù)的用戶(hù)請(qǐng)定期的對(duì)數(shù)據(jù)庫(kù)進(jìn)行壓縮修復(fù),SQL數(shù)據(jù)庫(kù)的用戶(hù)可以定期的清除日志,壓縮等.定期的維護(hù)數(shù)據(jù)庫(kù)你也可以發(fā)現(xiàn)系統(tǒng)的性能會(huì)有所提高.
什么時(shí)候標(biāo)簽使用Ajax輸出
KesionCMS V4.0獨(dú)創(chuàng)引入標(biāo)簽ajax輸出功能,但有些用戶(hù)對(duì)此并不了解,不清楚的朋友可以在此了解http://tech.163.com/05/0908/17/1T55SUPP00091K8Q.html
1、終級(jí)列表標(biāo)簽(分頁(yè)標(biāo)簽)
當(dāng)網(wǎng)站的欄目信息不允許別人采集時(shí),可以輸用ajax輸出.
當(dāng)你的欄目下文章超過(guò)1000篇時(shí),可以考慮ajax輸出。原因如下:假設(shè)你每頁(yè)顯示是20篇。那么每次生成這個(gè)欄目頁(yè)就需同時(shí)生成1000/20=50個(gè)靜態(tài)頁(yè)面。假如有20個(gè)欄目,按全部生成的話,一瞬間就要同時(shí)生成50*20=1000個(gè)靜態(tài)頁(yè)面,這時(shí)服務(wù)器占用資源就會(huì)急劇增大.造成發(fā)布欄目頁(yè)很慢。那如果是ajax輸出,每個(gè)欄目無(wú)論文章數(shù)多少,都輸生成一個(gè)靜態(tài)頁(yè)面。其實(shí)ajax是無(wú)刷新動(dòng)態(tài)調(diào)用的。當(dāng)你用AJAX輸出時(shí),你在后臺(tái)添加的新的內(nèi)容,甚至不需要再生成欄目頁(yè)面,因?yàn)樗麜?huì)動(dòng)態(tài)更新。
2、最新更新,點(diǎn)擊排行,推薦信息等調(diào)用
當(dāng)你的內(nèi)容頁(yè)面已生成靜態(tài)頁(yè)面后,你是否曾經(jīng)因?yàn)閮?nèi)容頁(yè)不能自動(dòng)更新點(diǎn)擊排行,不能自動(dòng)更新最新添加的文章,不能自動(dòng)更新推薦信息而煩惱呢?KesionCMS V4.0引進(jìn)了ajax輸出,徹底解決了這個(gè)問(wèn)題了。您只需將標(biāo)簽輸出格式選擇ajax即可。
1、標(biāo)簽調(diào)用不合理
A、自定義靜態(tài)標(biāo)簽(影響最大)
有些用戶(hù)為了方便,大量使用了自定義靜態(tài)標(biāo)簽。甚至將整個(gè)頁(yè)面模板做成一個(gè)靜態(tài)標(biāo)簽調(diào)用。更可怕的是在自定義靜態(tài)標(biāo)簽里插入大量的系統(tǒng)函數(shù)標(biāo)簽,自定義SQL標(biāo)簽等。
經(jīng)測(cè)試如果在自定義靜態(tài)標(biāo)簽里插入系統(tǒng)函數(shù)標(biāo)簽和自定義sql標(biāo)簽,系統(tǒng)的生成速度將大打折扣.原因如下:原本只需讀取數(shù)據(jù)庫(kù)進(jìn)行一次的標(biāo)簽替換工作,而借助自定義靜態(tài)標(biāo)簽無(wú)形中卻需要最少兩次的標(biāo)簽替換工作。所以性能下降。
經(jīng)以上分析:解決方法是盡量少用或不用自定義靜態(tài)標(biāo)簽。絕對(duì)不在自定義靜態(tài)標(biāo)簽里插入系統(tǒng)函數(shù)標(biāo)簽和自定義SQL標(biāo)簽。
B、自定義SQL標(biāo)簽
用過(guò)自定義SQL標(biāo)簽的朋友都知道,一個(gè)SQL標(biāo)簽對(duì)應(yīng)一條SQL查詢(xún)語(yǔ)句。SQL的構(gòu)造合理與否直接影響到系統(tǒng)的性能。
舉例如下:
語(yǔ)句一:Select * from ks_article where tid in('欄目ID') order by id desc
語(yǔ)句二:Select top 10 id,title,AddDate From KS_Article Where Tid='欄目ID' order by id desc
并假設(shè)循環(huán)體都如以下:
復(fù)制代碼 代碼如下:
[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]
以上代碼段中。顯然運(yùn)行最終效果都一樣,但語(yǔ)句二的執(zhí)行效率將優(yōu)于語(yǔ)句一。當(dāng)你的數(shù)據(jù)量越多越明顯。這里就不詳情說(shuō)明原因了,有興趣的朋友可以參考:http://www.cnblogs.com/xhp5678/archive/2006/07/07/445206.html, http://www.cnblogs.com/oec2003/archive/2007/05/09/740048.html
C.系統(tǒng)函數(shù)標(biāo)簽
KesionCMS系統(tǒng)函數(shù)標(biāo)簽作為入門(mén)級(jí)標(biāo)簽,所有代碼都集成在核心代碼的函數(shù)內(nèi)。已在語(yǔ)句上做了大量的優(yōu)化工作了。原則上用戶(hù)在使用上也無(wú)需注意什么了。但如果你稍微留意,你就會(huì)發(fā)現(xiàn)很多標(biāo)簽都支持通用。細(xì)心的朋友會(huì)發(fā)現(xiàn)標(biāo)簽屬性里的”所性欄目”一欄中:分別有”當(dāng)前欄目(通用)”、”不指定欄目”等。這時(shí)你如果指定為當(dāng)前欄目(通用),那么你建的這個(gè)標(biāo)簽在本模型里就是通用標(biāo)簽了。這樣,你也就無(wú)需建大量的標(biāo)簽。從頁(yè)減少數(shù)據(jù)庫(kù)的標(biāo)簽替換次數(shù).。
2、欄目劃分不合理
有些用戶(hù)欄目劃分極其不合理,一個(gè)欄目下的文章居然達(dá)到幾萬(wàn)條數(shù)據(jù)。對(duì)于欄目下文章較多,建議將欄目進(jìn)行細(xì)分。V4.0引進(jìn)了模型,也可以通過(guò)自建模型,將數(shù)據(jù)分布到用戶(hù)建的數(shù)據(jù)表。從而有效的減少了單個(gè)數(shù)據(jù)表的壓力.
3、沒(méi)有定期對(duì)數(shù)據(jù)庫(kù)進(jìn)行維護(hù)
使用Access數(shù)據(jù)庫(kù)的用戶(hù)請(qǐng)定期的對(duì)數(shù)據(jù)庫(kù)進(jìn)行壓縮修復(fù),SQL數(shù)據(jù)庫(kù)的用戶(hù)可以定期的清除日志,壓縮等.定期的維護(hù)數(shù)據(jù)庫(kù)你也可以發(fā)現(xiàn)系統(tǒng)的性能會(huì)有所提高.
什么時(shí)候標(biāo)簽使用Ajax輸出
KesionCMS V4.0獨(dú)創(chuàng)引入標(biāo)簽ajax輸出功能,但有些用戶(hù)對(duì)此并不了解,不清楚的朋友可以在此了解http://tech.163.com/05/0908/17/1T55SUPP00091K8Q.html
1、終級(jí)列表標(biāo)簽(分頁(yè)標(biāo)簽)
當(dāng)網(wǎng)站的欄目信息不允許別人采集時(shí),可以輸用ajax輸出.
當(dāng)你的欄目下文章超過(guò)1000篇時(shí),可以考慮ajax輸出。原因如下:假設(shè)你每頁(yè)顯示是20篇。那么每次生成這個(gè)欄目頁(yè)就需同時(shí)生成1000/20=50個(gè)靜態(tài)頁(yè)面。假如有20個(gè)欄目,按全部生成的話,一瞬間就要同時(shí)生成50*20=1000個(gè)靜態(tài)頁(yè)面,這時(shí)服務(wù)器占用資源就會(huì)急劇增大.造成發(fā)布欄目頁(yè)很慢。那如果是ajax輸出,每個(gè)欄目無(wú)論文章數(shù)多少,都輸生成一個(gè)靜態(tài)頁(yè)面。其實(shí)ajax是無(wú)刷新動(dòng)態(tài)調(diào)用的。當(dāng)你用AJAX輸出時(shí),你在后臺(tái)添加的新的內(nèi)容,甚至不需要再生成欄目頁(yè)面,因?yàn)樗麜?huì)動(dòng)態(tài)更新。
2、最新更新,點(diǎn)擊排行,推薦信息等調(diào)用
當(dāng)你的內(nèi)容頁(yè)面已生成靜態(tài)頁(yè)面后,你是否曾經(jīng)因?yàn)閮?nèi)容頁(yè)不能自動(dòng)更新點(diǎn)擊排行,不能自動(dòng)更新最新添加的文章,不能自動(dòng)更新推薦信息而煩惱呢?KesionCMS V4.0引進(jìn)了ajax輸出,徹底解決了這個(gè)問(wèn)題了。您只需將標(biāo)簽輸出格式選擇ajax即可。
相關(guān)文章
kesion 科訊不用登錄實(shí)現(xiàn)digg的修改方法
科訊4.5的系統(tǒng)增加了dig功能,可是不注冊(cè)的用戶(hù)無(wú)法digg是個(gè)不好的地方,本來(lái)國(guó)內(nèi)的民眾就不喜歡回復(fù),一個(gè)digg要注冊(cè)時(shí)很難的了,所以該了下。2008-01-01KesionCMS V4.x部份最常用的標(biāo)簽清單
KesionCMS V4.x部份最常用的標(biāo)簽清單...2007-09-09KesionCMSV4.0 個(gè)人空間二級(jí)域名轉(zhuǎn)向處理程序
KesionCMSV4.0 個(gè)人空間二級(jí)域名轉(zhuǎn)向處理程序...2007-09-09列出KesionCMS 4.0系統(tǒng)后臺(tái)菜單,讓大家熟悉下
列出KesionCMS 4.0系統(tǒng)后臺(tái)菜單,讓大家熟悉下...2007-09-09科汛V4.5偽靜態(tài)的實(shí)現(xiàn)正則規(guī)則
2008-02-02全面優(yōu)化V4.0及AJAX標(biāo)簽使用技巧
全面優(yōu)化V4.0及AJAX標(biāo)簽使用技巧...2007-09-09Window XP用戶(hù)安裝科訊關(guān)于權(quán)限問(wèn)題必看教程
Window XP用戶(hù)安裝科訊關(guān)于權(quán)限問(wèn)題必看教程...2007-09-09