`
i.wuyoo
  • 浏览: 11590 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

动态可缓存的内容管理系统(CMS)

    博客分类:
  • php
阅读更多

关键词:cache squid 动态可缓存内容管理系统 内容管理系统 CMS

摘要:内容管理系统(CMS)在各大商业站点和门户站点中扮演着重要的角色,是内容有效组织和快速发布极为重要的基础平台。目前主流的内容发布系统都使用静态页面进行内容发布,在我们的实际使用过程中我们深切的感受到静态内容发布存在着很多弊端,本文讨论全搜索目前正在使用的基于动态可缓存内容发布系统的考虑和实现。

一、什么是内容管理系统?

内容发布系统也即CMS,英文全称为:Content management system,用于对企业业务数据进行组织、管理和发布,这里的内容不仅仅指文字内容,还包括图片、声音、视频、Flash等富媒体资源,CMS的应用极大的提高了站点的建设效率并降低了维护成本。目前市面上的CMS种类繁多,开源的内容管理系统主要有:

PHP

国内PHPCMSVeryCMSDeDeCMSEmpireCMS,HBCMS

国外:MamboJoomla!XOOPSDrupal

更多见:http://www.php-open.com/9.htm

Javahttp://www.open-open.com/39.htm

ASP主要考察使用过风讯,对其它ASPCMS感兴趣的可以查看这篇文章

http://hi.baidu.com/liberty88/blog/item/56e147fbd8271a176c22eb0e.html

商业CMS主要有:方正翔宇CMS,北方网CMSTRS WAS,其中方正翔宇CMS在媒体行业应用非常广泛,TRS在政府部门应用非常广泛,北方网CMS在一些媒体网站中也有些应用。

就目前的总体情况来看,开源类CMS和商业类CMS还存在很大的差距,商业CMS在工作流,权限控制,内容的编采发以及系统的性能,扩展和可维护性上已经非常成熟和完善;对比开源CMS,则在这些方面存在很大的差距。由于个人觉得国外的CMS不太符合国人的使用习惯和国情,所以对他们研究的比较少也不太清楚他们在国内的应用情况,就国内的CMS而言目前也还没有看到较大规模应用的案例(如果有请告诉我),我透露几个目前已知的商业CMS内容发布系统的应用情况关键性能指标,最大数据量千万级,同时最高终端用户数500,发布时间1-2秒,每日更新1-2万篇内容,相关内容自动更新。总之,开源CMS要走的路还长。

二、什么是动态可缓存的内容管理系统?

动态可缓存的内容管理系统是指前台页面动态解析执行并且动态解析执行的页面可被客户端和代理服务器进行缓存从而达到和生成静态页面同样的执行性能和效果的管理系统。

三、为什么使用动态可缓存的内容管理系统?

第一节面提供的内容发布系统包括商业类CMS基本都是以生成静态页面的方式进行内容发布,我们早期的系统也全部使用静态静态页面进行内容发布,在我们的实际使用过程中,生成静态页面的方式给我们带来了很多麻烦,主要有下面几个问题:

1、在设计、开发上,使用静态页面进行发布,系统需要很多额外的设计和开发,以静态页面的方式进行发布,涉及到生成规则,更新规则,发布规则等方方面面的事务,特别是当系统对内容的发布和更新有苛刻的性能要求时,这些规则更是需要进行仔细的设计和权衡。使用静态页进行发布主要是考虑到系统的执行性能,我当然同意静态页的执行性能是很高的,但是多数系统却远远大不到预想的访问量而引入了高度的系统复杂,也并非是系统一开始就有巨大的访问量,我也不认同动态执行页面就无法承受大访问量的说法,其实我看到的大多数CMS中都没有对静态页的处理规则进行很好的设计,比如:经常是在后台撤销了内容发现原始html没有删除,内容依然可以访问或者一篇内容更新时,相关引用的内容无法做到关联更新;静态发布方式并不是那样容易的,相反我觉得动态发布更容易开发和维护。

2、在系统维护上,生成的静态页面会占用很大的磁盘空间,我们所有的静态页面加起来应该有100-200G了。这样庞大的数据量备份,恢复都是很麻烦的,无形之中给系统的运维工作增加了很大的难度,但实际上CMS有个显著的特点就是发布多,修改少,越早的数据越少被访问,应该说这100200G的数据中有99%以上的数据是有效期过后很少或再也没被访问过的,所以磁盘几乎是白白的被浪费了。

所以,在我们的实际使用过程中我们更倾向于动态内容执行+多重cache的方式,新的系统中我们是这样做的,最后完成的系统非常简单并在Squid的帮助下达到静态页面的执行性能

四、如何实现动态可缓存的内容管理系统?

(可缓存的内容管理系统用户访问流程)

实现过程:

1. 所有前台页面使用URL rewrite重写成.html进行访问,方便搜索引擎收录。

2. WEB程序执行时,向Squid服务器发送Expires头,用于控制squid服务器的缓存时间。Expires用户设置Squid服务器和客户端的缓存时间。如:

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作为缓存,即使是突发流量也可以轻松自如的应对。

学习资料:

http://delicious.com/wuyong/cache

<!--EndFragment-->

  • 大小: 31.8 KB
分享到:
评论
15 楼 四不象 2009-12-26  
这个这个,不算什么新鲜事儿了吧,很多网站的cms都这样呀
14 楼 cylt 2009-12-25  
正在学习CMS及大数量的资讯系统,看了LZ写的,对CMS等应用有了更深入的了解.
13 楼 allwit 2009-11-30  
学习一下..
12 楼 allwit 2009-11-30  
学习一下..
11 楼 lpj163 2009-11-26  
完全是介绍性的,我还以为是开源的管理系统呢
10 楼 ithero 2009-11-11  
不错的思路。不知道对于内容模型你们是怎么考虑的
9 楼 kakashishi 2009-08-06  
有个机会接触了 翔宇CMS ,说实话这个东西 真不敢恭维
8 楼 i.wuyoo 2009-07-25  
javafan_303 写道
hoho,我就是翔宇的哦


据说翔宇做了12年,我跟你们产品经理有过深入的接触,总的来说还是做得不错,但是你们的电子版那确实不敢恭维。
7 楼 i.wuyoo 2009-07-25  
lw223 写道
[align=baseline; line-height: 150%; text-align: left;]<span style="font-weight: bold; font-size: 10.5pt; font-family: 'Courier New';">关键词:</span>[size=10.5pt; font-family: 'Courier New';]cache squid <span>动态可缓存内容管理系统 内容管理系统 [/size]<span style="font-family: Courier New;">CMS</span></span></p>

<p class="p0" style="margin-top: 7.8pt; margin-bottom: 7.8pt; vertical-align: baseline; text-indent: 21pt; line-height: 150%; text-align: justify;"><span style="font-weight: normal; font-size: 10.5pt; font-family: 'Courier New';">2、</span><span style="font-weight: normal; font-size: 10.5pt; font-family: 'Courier New';">在系统维护上,生成的静态页面会占用很大的磁盘空间,<span style="color: #ff0000;">我们所有的静态页面加起来应该有<span style="font-family: Courier New;">100-200</span><span>个</span><span style="font-family: Courier New;">G</span></span><span>了。这样庞大的数据量备份,恢复都是很麻烦的,无形之中给系统的运维工作增加了很大的难度,但实际上</span><span style="font-family: Courier New;">CMS</span><span>有个显著的特点就是发布多,修改少,越早的数据越少被访问,应该说这</span><span style="font-family: Courier New;">100</span><span>,</span><span style="font-family: Courier New;">200</span><span>个</span><span style="font-family: Courier New;">G</span><span>的数据中有</span><span style="font-family: Courier New;">99%</span><span>以上的数据是有效期过后很少或再也没被访问过的,所以磁盘几乎是白白的被浪费了。</span></span>
[/align]

<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt;">[size=10.5pt; font-family: 'Courier New';]http://delicious.com/wuyong/cache[/size]
<!--EndFragment-->

</div>
<br>请问你们什么网站,这么大??


我们有20多个站点,尤其财经量特别大,每天从巨灵的数据网关中抽取几万条数据生成静态页恢复一次非常麻烦。
6 楼 i.wuyoo 2009-07-25  
kingheaven 写道
理想状态是所有页面全部静态化.
更理想的状态是所有页面进入内存, 哇哈哈哈


呵呵,这种实现方式并不是所有内容都放到内存中,只放最新最热的数据。
5 楼 lw223 2009-07-23  
<div class="quote_title">i.wuyoo 写道</div>
<div class="quote_div">
<div class="Section0">
<p class="p0" style="margin-top: 7.8pt; margin-bottom: 7.8pt; vertical-align: baseline; line-height: 150%; text-align: left;"><span style="font-weight: bold; font-size: 10.5pt; font-family: 'Courier New';">关键词:</span><span style="font-size: 10.5pt; font-family: 'Courier New';">cache squid <span>动态可缓存内容管理系统 内容管理系统 </span><span style="font-family: Courier New;">CMS</span></span></p>
<p class="p0" style="margin-top: 7.8pt; margin-bottom: 7.8pt; vertical-align: baseline; line-height: 150%; text-align: justify;"> </p>
<p class="p0" style="margin-top: 7.8pt; margin-bottom: 7.8pt; vertical-align: baseline; text-indent: 21pt; line-height: 150%; text-align: justify;"><span style="font-weight: normal; font-size: 10.5pt; font-family: 'Courier New';">2、</span><span style="font-weight: normal; font-size: 10.5pt; font-family: 'Courier New';">在系统维护上,生成的静态页面会占用很大的磁盘空间,<span style="color: #ff0000;">我们所有的静态页面加起来应该有<span style="font-family: Courier New;">100-200</span><span>个</span><span style="font-family: Courier New;">G</span></span><span>了。这样庞大的数据量备份,恢复都是很麻烦的,无形之中给系统的运维工作增加了很大的难度,但实际上</span><span style="font-family: Courier New;">CMS</span><span>有个显著的特点就是发布多,修改少,越早的数据越少被访问,应该说这</span><span style="font-family: Courier New;">100</span><span>,</span><span style="font-family: Courier New;">200</span><span>个</span><span style="font-family: Courier New;">G</span><span>的数据中有</span><span style="font-family: Courier New;">99%</span><span>以上的数据是有效期过后很少或再也没被访问过的,所以磁盘几乎是白白的被浪费了。</span></span></p>
</div>
<p class="p0" style="margin-top: 7.8pt; margin-bottom: 7.8pt; vertical-align: baseline; line-height: 150%; text-align: justify;"><span style="font-size: 10.5pt; font-family: 'Courier New';">学习资料:</span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 10.5pt; font-family: 'Courier New';"><a href="http://delicious.com/wuyong/cache" target="_blank">http://delicious.com/wuyong/cache</a></span></p>
<p>&lt;!--EndFragment--&gt;</p>
</div>
<p><br>请问你们什么网站,这么大??</p>
4 楼 javafan_303 2009-07-22  
hoho,我就是翔宇的哦
3 楼 kingheaven 2009-07-01  
理想状态是所有页面全部静态化.
更理想的状态是所有页面进入内存, 哇哈哈哈
2 楼 vtrtbb 2009-07-01  
据我所知cms所生成的页面都是静态的
1 楼 七月十五 2009-06-14  
cache对于服务器运算减负、静态页面支持、搜索引擎亲和力都是相当重要的。cache的命中率是一个关键指数,看了这篇文章将获益匪浅。

相关推荐

    X6CMS网站内容管理系统 v2.2.rar

    X6CMS:全称小六网站内容管理系统。X6CMS是一个功能完善的营销型网站管理平台,采用PHP MYSQL架构,全站内置SEO优化机制,界面简介,操作方便。 X6CMS系统核心采用Codeigniter框架,同时作为免费开源软件发布,集...

    CMS Made Simple(内容管理系统)

    CMS Made Simple是一款采用PHP,MySQL和Smarty模板引擎开发的内容管理系统,提供基于角色的权限管理系统,智能缓存机制基于系统向导的安装和更新机制等。 软件介绍 CMS Made Simple是一个简单易于使用的内容管理...

    LvyeCms(旅烨cms)内容管理系统 v3.1.zip

    LvyeCms(旅烨cms)内容管理系统特性介绍: 基于ThinkPHP最新版本ThinkPHP 3.2.3。 模块化:全新的架构和模块化的开发机制,便于灵活扩展和二次开发。 内容模型:通过建立不同的内容模型可以实现差异化的功能需求,...

    CMS4J 专业的jjava/jsp版网站内容管理系统

    最新消息,CMS4J 现已推出 基于java / jsp技术开发的网站管理系统 CMS4J 2008 免费版 ,并且又推出了一套同样基于java / jsp技术开发的博客系统! CMS4J 2008 革新了原有的系统架构,开发了更为专业、便捷的后台...

    先锋Android Market CMS内容管理系统 X1.0.zip

    先锋Android Market CMS内容管理系统是基于先锋CMS系统开发而成的一套安卓应用市场管理系统,继承了先锋CMS智能人性、简单易用、安全高效的特点。   1、智能人性、简单易用、安全高效:先锋AndroidMarket CMS内容...

    silverstripe v3.1.5 CMS内容管理系统

    SilverStripe,一款功能强大的CMS内容管理系统,具有强大的网站设计功能,直观和友好的用户操作界面。以一种奇特的方式将站点内容的编辑,开发,设计集合在一起,并使其执行起来更灵活,更快速.采用MVC框架设计开发并运用了...

    贝云cms(bycms)付费内容内容管理系统

    贝云cms(bycms)付费内容管理系统是一套基于thinkphp5.0.11,包含文章,图片,下载,视频模型,旨在帮助开发者节约web应用后台开发时间和精力,以最快的速度开发出高质量的web应用。包含pc端,手机端,微信端,安卓...

    seacms海洋cms影视管理系统 v9.1.zip

    seacms海洋cms影视管理系统 v9.1 更新日志 更新日期:2019年2月1日 v9.1 优化:服务器开启OPcache时后台设置兼容性 优化:视频编辑时剧情分类显示方式 优化:剧情分类缓存项 seacms海洋影视管理系统简介 海洋...

    贝云cms(bycms)内容管理系统 v1.3.zip

    贝云cms(bycms)内容管理系统是一套简单,易用的内容管理系统,基于thinkphp5.0.9,包含文章,图片,下载,视频模型,旨在帮助开发者节约web应用后台开发时间和精力,以最快的速度开发出高质量的web应用。包含pc端,...

    我记录 内容管理系统 CMS源码

    我记录的缓存组件和配置组件,全部使用 json 进行持久化,是系统的重要组成部分。 wojilu ajax 1、提供了最常用的弹窗、表单验证、菜单等内容; 2、基本上“零js书写”,不需要js基础就能使用,上手非常容易; ...

    X6CMS网站内容管理系统 v2.2

    X6CMS:全称小六网站内容管理系统。X6CMS是一个功能完善的营销型网站管理平台,采用PHP+MYSQL架构,全站内置SEO优化机制,界面简介,操作方便。 X6CMS系统核心采用Codeigniter框架,同时作为免费开源软件发布,集...

    York CMS 约克内容管理系统 v1.1

    约克内容管理系统(York CMS)是国内.NET平台下内容管理系统的典范之作,它集成了内容模型管理、结点管理、模板管理、内容管理、页面发布管理、用户管理、插件管理等诸多强大功能以有效解决用户在网站信息化建设中...

    内容管理系统Cms V3.1.3版源码

    随风缘内容管理(JumbotCms!Net)V3.1_414系统源码,最后更新于2009-04-14 针对上一版本,主要有如下改动: V3.1_0414比较V3.0_0322 增加了快速模板组,js嵌入代替ajax 增加了一套纯html模板(不建议生成静态页的站点...

    91736cms内容管理系统 v1.9.7.rar

    91736CMS是91736.com官方推出的一套完全开源的通用的内容管理系统。主要使用php mysql smarty技术基础进行开发,91736CMS采用OOP(面向... 91736cms企业网站内容管理系统v1.9.7更新内容: 1、增加后台菜单管理功能

    91736cms企业网站内容管理系统 v1.9.6 GBK.rar

    91736CMS是91736.com官方推出的一套完全开源的通用的内容管理系统。主要使用php mysql smarty技术基础进行开发,91736CMS采用OOP(面向对象)方式进行基础运行框架搭建。模块化开发方式做为功能开发形式。框架易于功能...

    基于Java的PublicCMS内容管理系统设计源码

    PublicCMS内容管理系统:基于Java开发,包含3960个文件,其中包括1160个GIF图像文件、845个Java类文件、642个JavaScript文件、538个HTML文件、253个PNG图像文件、153个CSS样式文件、77个SVG文件、50个数据文件、34个...

    贝云cms内容管理系统 v1.3

    贝云cms(pc+app)付费内容管理系统一款基于thinkphp5的内容管理系统,具有一键生成控制器,模型,验证...安装方法:xxx.com/install.php或访问域名进入安装向导后台xxx.com/admin.php贝云cms内容管理系统 更新日志:增加api

    ASP.net版CMS内容管理系统(完整源码)

    ASP.net版CMS内容管理系统集新闻、下载、商城、博客、知道、交友、圈子、群组等众多流行功能于一体,全面面 向WEB2.0,而且他具有很强的定制功能,可以根据用户的要求任意组合、无缝嵌入,另外还具有优异的缓存技术...

    V5CMS企业网站管理系统 4.20.zip

    V5CMS企业网站管理系统是一套小型的企业管理系统,基于微软asp.net mvc5开发的一套框架,模板使用nvelocity,模块包含文章发布系统,单页制作,友情链接,碎片管理,在线文件等模块,带缓存功能,上传即可使用,可以...

Global site tag (gtag.js) - Google Analytics