方正翔宇网站内容管理系统(基于动态可缓存内容管理系统(CMS)内容发布系统的应用)
优采云 发布时间: 2021-09-03 03:23方正翔宇网站内容管理系统(基于动态可缓存内容管理系统(CMS)内容发布系统的应用)
关键词:cachesquid 动态可缓存内容管理系统 内容管理系统cms
摘要:内容管理系统(cms)在各大商业网站和门户网站中发挥着重要作用,是内容有效组织和快速发布的极其重要的基础平台。目前主流的内容发布系统使用静态页面进行内容发布。在我们的实际使用中,我们深切感受到静态内容发布的弊端很多。本文讨论了 Full Search 当前使用的动态可缓存内容发布系统。考虑并实现。
一、什么是内容管理系统?
内容发布系统也是cms,英文全称:Contentmanagementsystem,用于组织、管理和发布企业业务数据。这里的内容不仅仅指文字内容,还包括图片、声音、视频、Flash等丰富的媒体资源,cms的应用大大提高了网站建设的效率,降低了维护成本。目前市面上的cms种类很多,主要的开源内容管理系统有:
PHP:
国产PHPcms、Verycms、DeDecms、Empirecms、HBcms
海外:Mambo、Joomla!、XOOPS、Drupal
查看更多:
Java 见
ASP主要调查新闻的使用,对其他ASPcms感兴趣的可以查看这个文章
Businesscms主要包括:方正翔宇cms、北方网络cms和TRSWAS。其中,方正翔宇cms广泛应用于媒体行业,TRS广泛应用于政府部门,北方网cms在部分媒体网站也有部分应用。
就目前的整体情况而言,开源cms和商用cms还是有很大差距的。商用cms在工作流、权限控制、内容编辑发布、系统性能方面。扩展性和可维护性已经非常成熟完善;和开源的cms相比,在这些方面还有很大的差距。我个人觉得国外的cms不符合中国人的使用习惯和国情,所以我对他们研究较少,国内的应用我也不确定。至于国内的cms,我还没有看到。对于更*敏*感*词*的应用案例(如果有请告诉我),我透露了目前已知的商用cms内容发布系统应用的几个关键性能指标。最大数据量千万级,最大终端用户数500。发布时间1-2秒,每天更新1万到2万条内容,相关内容自动更新。总之,开源cms还有很长的路要走。
二、什么是可动态缓存的内容管理系统?
动态缓存内容管理系统是指动态解析和执行前端页面的管理系统,动态解析和执行的页面可以被客户端和代理服务器缓存,以达到与静态页面相同的执行性能和效果.
三、为什么要使用可动态缓存的内容管理系统?
第一节提供的内容发布系统,包括商业cms,基本上是通过生成静态页面来发布内容。我们早期的系统还使用静态静态页面进行内容发布。在我们实际使用过程中,静态页面的生成方式给我们带来了很多麻烦,主要包括以下几个问题:
1、在设计和开发中,静态页面用于发布。该系统需要大量额外的设计和开发。以静态页面的形式发布,涉及到生成规则、更新规则、发布规则等各个方面的事务。尤其是当系统对内容发布和更新有严格的性能要求时,这些规则需要精心设计和权衡。使用静态页面进行发布主要是因为系统的执行性能。我当然同意静态页面的执行性能非常高,但是大多数系统都与预期的访问量相差甚远,并且引入了高度的系统复杂性。系统从一开始就有大量的访问量,我不同意动态执行页面不能承受大量访问量的说法。其实我看到的大部分cms,对于静态页面的处理规则都没有很好的设计。 ,比如:我经常在后台撤销内容,发现原来的html没有删除,内容还可以访问,或者某条内容的内容更新了,相关引用的内容无法更新;静态发布方式没那么容易,相反我觉得动态发布更容易开发和维护。
2、在系统维护方面,生成的静态页面会占用大量磁盘空间。我们所有的静态页面加起来应该是 100-200 GB。如此庞大的数据备份和恢复非常麻烦,无形中给系统的运维增加了很多难度,但其实cms有一个显着的特点就是发布越多,修改越少,越快越少数据被访问,应该说100、200G的数据有99%以上在有效期过后很少或永远不会被访问,所以磁盘几乎是白白浪费了。
所以,在我们的实际使用中,我们更倾向于动态内容执行+多缓存。我们在新系统中执行此操作。最终的系统非常简单,在Squid的帮助下实现了静态页面。性能。
四、如何实现一个动态可缓存的内容管理系统?
实现过程:
1.所有前端页面都通过URLrewrite改写成.html进行访问,方便搜索引擎收录。
2.WEB 程序执行时,将 Expires 头发送给 Squid 服务器,控制 Squid 服务器的缓存时间。 Expires 用户设置Squid 服务器和客户端的缓存时间。如:
PHP
PHP 代码
header("Expires:".gmdate("D,dMYH:i:s",time()+120)."GMT");//缓存120秒
Java
Java 代码
java.text.SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");java.util.Calendarcal=Calendar.getInstance(newSimpleTimeZone(0,"GMT"));format.setCalendar(cal) ;java.util.Dateexpires=format.parse(format.format(newDate(System.currentTimeMillis()+120*1000)));response.setHeader('Expires:'+expires);
3.配置squid服务器指向源站,配置ignore-reloa忽略no-cache和reload请求,提高squid的命中率。
4. 将最新最热的数据缓存到 Memcached 服务器,减少数据库查询。
至此,整个过程已经完成。早期系统的访问量一般都比较小。这时候WEB服务器就可以直接对外提供服务了。因为cms管理的内容发布快,修改少,所以最新最热的内容都会在Memcached中命中;当访问量增加到一定程度时,可以在前端增加一个squid服务器,达到静态页面一样的效果,同时还具备系统的可维护性和灵活性。我们的全搜索首页、母婴频道、娱乐频道都用这种方法取得了不错的效果。
五、extension
当使用 Squid 作为前端时,过期时间设置就变得非常重要。如果设置的太长,用户很容易看到过期的内容。如果设置太短,会降低命中率,无法有效利用前端缓存。 到期时间应该是多久?一般来说,首页的更新频道很高,内容页更新的频率较低,所以首页的过期时间应该设置的短一些,内容页可以设置的长一些。
新浪
新浪首页60秒过期,内容页120秒过期
搜狐
搜狐首页70秒过期,内容页120秒过期。
163
163首页80秒过期,内容页120秒过期
经过测试,成都全搜索系统首页设置为60秒过期,内容页设置为120秒过期。经过长时间的运行,该设置没有收到任何编辑或用户对不良使用的反馈。该设置使每个首页每60秒到原服务器执行一次;内容页面每 120 秒到原创服务器执行一次。由于后端使用memcached作为缓存,即使是突发流量也能轻松自如地处理。
学习资料: