行业动态
分布式CMS中页面静态模块的开发经验
添加时间:2020-05-03 11:07:00
公司开发新项目,选择分布式系统架构。同时,项目中也存在大量的图形显示需求。考虑到开发效率和性能问题,需要集成CMS功能,实现后台数据静态输入。
前端使用bootstrap和extjs,权限使用Shiro框架,搜索使用Solr或Lucene(这不是临时实现的)。
在这个项目之前,公司还有一套CMS系统。作为公司主营业务的基础,它有很多优势。其主要优点是定制性强,能够适应各种前端布局页面。另一个优点是开发速度非常快,基于模板标签的开发,屏蔽了代码级的复杂性和开发人员级的差距。有三个弱点。一个是基于正则替换的标签库的实现,然后处理标签表达式的逻辑。标记没有实现语法树和上下文,这导致在某些情况下嵌套多个标记函数时,替换逻辑的实现不正确。2、 目前已经没有缓存技术(只在JVM中实现HashMap缓存),数据量大,生成速度快,数据库查找有明显的瓶颈。3、 未能生成的模板没有提供足够的清晰错误提示来帮助用户调试错误。
整个生成过程基于FreeMarker模板引擎。在项目前期,对速度和自由标记进行了比较。由于FreeMarker的上次更新时间比较接近,所以终选择了FreeMarker,事实上,两者应该是相似的。
让我们看看当前的类结构
FreeMarker支持实现templatemethodmodelex接口的自定义函数和实现templatedirectivemodel的自定义标记。上面的代码是fun包下的自定义函数和tags包下的自定义标签。两者的区别:1。从调用方法的角度来看,
这个问题包括许多细节,比如生成的地址规则。如果目标地址是news_index.html,则此地址不能用于第二页。我的处理方法是news_index_x.html。X表示页码,可以是2-n,但页是原始地址。如果您还需要基于FreeMarker实现这个函数,那么您可能会发现,关键的问题是如何生成页,并知道需要生成第二页。由于生成多个子页,通常在自定义标签(例如带有循环数据列表的标签)中,因此在一个页面上可以找到10个项,这些项无法完全显示。如何在生成阶段(即上一段)告诉代码。这是两个完全不同的代码区域和处理阶段。提到另一个开源的cms,我采取了一种技术性的方法。核心思想是,当涉及到自定义标记时,可以在生成的页面上输出任何字符串。假设标记中有另一个页面,并且需要生成该页面,则会在该页面上输出注释。生成此页后,将再次读取生成的页。如果有这样的评论,下一页将继续生成。
这里有一些代码
在整个静态部分,还有很多细节和难点,如标签参数的转换、生成静态页面过程中模板异常的捕获和反馈、查询生成队列的监控模块(基于Mongo)、标签设计、自动生成、定时生成、过滤生成等
静态功能与业务紧密结合。一个好的标签设计是非常重要的,这可能需要更多的步骤来提高避开雷区的能力。另外,这个开发过程也让我意识到,省时的开发模式是仔细思考,先慢后快,不要写一行垃圾代码。
下一篇: 从百度搜狗的竞争看中国搜索引擎的整体趋势
技巧精选
-
【seo推广策略】针对企业做seo优化推荐可行的的seo推广策略
2019-06-18 -
赢得百度搜索引擎的信任需要从空间、域名、内链及死链接等方面入手
2019-06-17 -
【自助模板】介绍企业网站选择自助模板建站的参考标准
2019-06-17 -
清楚网站建设的初衷,找准seo优化方向实现建站的真正价值
2019-06-17 -
网站关键词排名不知道怎么提升?从三方面优化精髓来阐述seo方法
2019-06-14 -
把握搜索引擎给予网站排名规则,多角度优化企业网站提升友好度
2019-06-14 -
解决网站收录与快照正常,关键词无排名问题
2019-06-14 -
建站准备工作:了解建站流程、挖掘建站目的、实现建站价值
2019-06-14
热门推荐
-
网站优化的好处和功能
2021-05-05 -
搜索引擎排名技巧与优化方法
2021-05-04 -
网站优化中如何降低网站相似度?
2021-05-04 -
SEO中应该注意哪些关键词?
2021-05-04 -
企业网站优化知识
2021-05-04 -
论企业网站的优化技巧
2021-05-03 -
中小企业网站优化
2021-05-03 -
SEO图像优化的基本技巧
2021-05-03