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