今天这篇主要说说nx系统的模板和缓存。目前缓存这方面,我思考的比较初级,也希望这篇文章能够吸引来一些高手,一起讨论这方面的设计问题。
为啥要选择模板去做网站,最初的阶段尝试使用,原因非常简单,就是为了提升性能。刚才是做web项目的时候,发现网页展示的慢,数据库的统计查询是最大的瓶颈。
比如某个seo页面,设计产品同事,需要a-b点线路,b-c点的线路,c-d点线路,这种组合条件。没有办法一条sql语句解决。那个时候采用拼stringbuilder的方法,然后把该模块缓存在内存中。后来发现维护是个大问题,n多行的stringbuilder,找个东西,要痛苦死了,如果页面设计变更,那更是痛苦。需要重新绑定大多数内容。不过虽然累点,但是网站性能还是有了保证了。
strBuilder.Append("<div class=\"login\">");
strBuilder.Append("<div class=\"lleft\" style=\"padding-left:240px;pading-top:20px;\">");
strBuilder.Append("<ul>");
之后的开发过程中,发现stringbuilder拼成网页,性能更好,基本可以达到响应的极限。我测试下来,一般相应也就几毫秒到二十几毫秒左右。但是方法傻了点。所以在之后的开发,特意留意一下,发现模板引擎可以解决目前碰到的问题。但是程序员需要学习另外的编程语言格式。不过这种学习成本,还是比较小的。
下图是使用模板绑定一个div数据
<div class="chanelBox w220">
<vt:function var="vCaseTitle" method="GetNewsCategoryList" type="BusinessRule.NewsCategoryDAL"
args="90" />
<div class="title28 clearfix">
<span class="left f14 bold blue ml_10 mt_8">{$:vCaseTitle.rows.0.CategoryShow}</span>
</div>
<div class="content pd_10 lineH180" style="height: 222px; overflow-y: hidden">
<vt:function var="vCaseNews" method="GetTopNewByCategory" type="BusinessRule.NewsDAL"
args="njcase" args="15" />
<vt:foreach from="$vCaseNews" item="vCaseNewItem" index="m">
<vt:function var="vCaseNewShortTitle" method="InterceptionString" type="CommonUtility.StringHelper"
args="$vCaseNewItem.NewsTitle" args="15"/>
<vt:function var="vCaseTitleUrl" method="GetNewsUrl" type="HtmlUrlHelper"
args="$vCaseNewItem.SubDomainCode" args="$vCaseNewItem.CategoryTableName"
args="$vCaseNewItem.News_Id" />
<p>
<span class="xing">*</span> <a target="blank" href="{$:vCaseTitleUrl}" class="dark">{$:vCaseNewShortTitle}</a></p>
</vt:foreach>
</div>
</div>
采用模板之后还解决了共用模块的编程。比如我把网页头作为一个共用模板,那在页面里面,我可以直接使用模板输出。
<vt:function var="vNavTopHtml" method="GetComponentsHtml" type="NxCms.Core.TemplateDAL"
args="navtop" args="www" output="true" />
大多数页面,都可以粗暴的缓存了,反正一存就是一个页面。客户请求,我直接响应缓存即可。这样开发维护成本都比较小。
比如我的cms需要更新一条新闻,缓存数据源,我只需要更新数据源,不用更新整个页面。相比更新板块,更新整个页面,耗费的资源,肯定是比较大的。就写这么多吧。
年后主要研究red5视频聊天,所以啥事情都懒的做。也没啥精神写东西。目前视频聊天这方面,技术上面已经解决了很多问题,大体成为一个产品,已经就在眼前了,之后可以研究的东西也很多了,比如网络通讯,视频格式,图像处理等。需要继续加油了。
作者:编程趋势
出处:http://www.cnblogs.com/codetrend/
作者微博:http://weibo.com/liuxue9527
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。