全面优化V4.0及AJAX标签使用技巧
众所周知。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即可。