今天这篇主要说说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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库