今天这篇主要说说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视频聊天,所以啥事情都懒的做。也没啥精神写东西。目前视频聊天这方面,技术上面已经解决了很多问题,大体成为一个产品,已经就在眼前了,之后可以研究的东西也很多了,比如网络通讯,视频格式,图像处理等。需要继续加油了。

 

posted on 2012-02-28 21:47  编程趋势  阅读(1220)  评论(0编辑  收藏  举报