关键词:cache squid 动态可缓存内容管理系统 内容管理系统 CMS
摘要:内容管理系统(CMS)在各大商业站点和门户站点中扮演着重要的角色,是内容有效组织和快速发布极为重要的基础平台。目前主流的内容发布系统都使用静态页面进行内容发布,在我们的实际使用过程中我们深切的感受到静态内容发布存在着很多弊端,本文讨论全搜索目前正在使用的基于动态可缓存内容发布系统的考虑和实现。
一、什么是内容管理系统?
内容发布系统也即CMS,英文全称为:Content management system,用于对企业业务数据进行组织、管理和发布,这里的内容不仅仅指文字内容,还包括图片、声音、视频、Flash等富媒体资源,CMS的应用极大的提高了站点的建设效率并降低了维护成本。目前市面上的CMS种类繁多,开源的内容管理系统主要有:
PHP:
国内PHPCMS,VeryCMS,DeDeCMS,EmpireCMS,HBCMS
国外:Mambo,Joomla!,XOOPS,Drupal
更多见:http://www.php-open.com/9.htm
Java见http://www.open-open.com/39.htm
ASP主要考察使用过风讯,对其它ASPCMS感兴趣的可以查看这篇文章
http://hi.baidu.com/liberty88/blog/item/56e147fbd8271a176c22eb0e.html
商业CMS主要有:方正翔宇CMS,北方网CMS和TRS WAS,其中方正翔宇CMS在媒体行业应用非常广泛,TRS在政府部门应用非常广泛,北方网CMS在一些媒体网站中也有些应用。
就目前的总体情况来看,开源类CMS和商业类CMS还存在很大的差距,商业CMS在工作流,权限控制,内容的编采发以及系统的性能,扩展和可维护性上已经非常成熟和完善;对比开源CMS,则在这些方面存在很大的差距。由于个人觉得国外的CMS不太符合国人的使用习惯和国情,所以对他们研究的比较少也不太清楚他们在国内的应用情况,就国内的CMS而言目前也还没有看到较大规模应用的案例(如果有请告诉我),我透露几个目前已知的商业CMS内容发布系统的应用情况关键性能指标,最大数据量千万级,同时最高终端用户数500,发布时间1-2秒,每日更新1万-2万篇内容,相关内容自动更新。总之,开源CMS要走的路还长。
二、什么是动态可缓存的内容管理系统?
动态可缓存的内容管理系统是指前台页面动态解析执行并且动态解析执行的页面可被客户端和代理服务器进行缓存从而达到和生成静态页面同样的执行性能和效果的管理系统。
三、为什么使用动态可缓存的内容管理系统?
第一节面提供的内容发布系统包括商业类CMS基本都是以生成静态页面的方式进行内容发布,我们早期的系统也全部使用静态静态页面进行内容发布,在我们的实际使用过程中,生成静态页面的方式给我们带来了很多麻烦,主要有下面几个问题:
1、在设计、开发上,使用静态页面进行发布,系统需要很多额外的设计和开发,以静态页面的方式进行发布,涉及到生成规则,更新规则,发布规则等方方面面的事务,特别是当系统对内容的发布和更新有苛刻的性能要求时,这些规则更是需要进行仔细的设计和权衡。使用静态页进行发布主要是考虑到系统的执行性能,我当然同意静态页的执行性能是很高的,但是多数系统却远远大不到预想的访问量而引入了高度的系统复杂,也并非是系统一开始就有巨大的访问量,我也不认同动态执行页面就无法承受大访问量的说法,其实我看到的大多数CMS中都没有对静态页的处理规则进行很好的设计,比如:经常是在后台撤销了内容发现原始html没有删除,内容依然可以访问或者一篇内容更新时,相关引用的内容无法做到关联更新;静态发布方式并不是那样容易的,相反我觉得动态发布更容易开发和维护。
2、在系统维护上,生成的静态页面会占用很大的磁盘空间,我们所有的静态页面加起来应该有100-200个G了。这样庞大的数据量备份,恢复都是很麻烦的,无形之中给系统的运维工作增加了很大的难度,但实际上CMS有个显著的特点就是发布多,修改少,越早的数据越少被访问,应该说这100,200个G的数据中有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
分享到:
相关推荐
【帝国CMS清理动态缓存插件】是一款专为帝国CMS内容管理系统设计的辅助工具,旨在优化网站性能,提高用户体验。在动态网站中,缓存技术是必不可少的,它能够存储频繁访问的数据,减少数据库的负担,加快页面加载速度...
**CMS内容管理系统详解** CMS(Content Management System)内容管理系统是一种基于Web的应用程序,它使得非技术用户也能方便地创建、编辑和管理网站内容。CMS的核心功能包括内容创作、版本控制、审核流程、权限...
Java CMS内容管理系统是一种基于Java开发语言构建的企业级内容管理解决方案,它主要用于管理和发布网站内容,提供了一套完整的、可扩展的、易于维护的系统架构。Java CMS的核心优势在于其跨平台性、稳定性和安全性,...
微软内容管理系统(CMS)是企业或组织用于创建、管理和分发数字内容的平台。C#是一种面向对象的编程语言,广泛应用于.NET框架中,用于构建包括Web应用在内的各种应用程序。CMS_C#门户网站cms程序通常指的是使用C#...
《基于Springboot的内容管理系统(CMS)详解》 在数字化时代,内容管理系统的存在至关重要,它为企业和个人提供了管理和发布内容的有效工具。本系统采用Springboot框架进行开发,这是一款由Pivotal团队维护的Java...
这是一个基于 Django 构建的开源内容管理系统,它专注于用户体验,并为设计人员和开发人员提供精确的控制。 功能特点 为作者提供快速、美观的界面 完全控制前端设计和结构 可扩展至数百万页面和数千编辑器 开箱即...
网站内容管理系统(Content Management System,简称CMS)是用于创建、编辑和管理数字内容的软件平台。在本项目中,我们关注的是使用ASP(Active Server Pages)技术来设计和实现这样的系统。ASP是一种由微软开发的...
CMS内容管理系统是用于在线创建、管理和发布数字内容的软件平台,尤其在企业门户构建中扮演着核心角色。Java源码的CMS系统具有跨平台、安全稳定等特性,使其成为开发此类系统的常见选择。本项目提供的Java源码可以...
3. **数据库管理**:熟悉MySQL或其他常见的数据库管理系统,因为CMS通常需要与数据库交互来存储和检索内容。 4. **模板引擎**:熊海CMS可能使用了某种模板引擎,如Smarty或Twig,学习模板语法可以方便地自定义网站...
CMS Made Simple是一款采用PHP,MySQL和Smarty模板引擎开发的内容管理系统,提供基于角色的权限管理系统,智能缓存机制基于系统向导的安装和更新机制等。 软件介绍 CMS Made Simple是一个简单易于使用的内容管理...
**CMS内容管理系统与数据库** CMS(Content Management System)内容管理系统是一种用于创建、管理和发布数字内容的软件应用。它简化了网站、博客、电子商务平台等在线内容的管理过程,无需深入编程知识即可操作。...
**CMS管理系统** CMS(Content Management System)是一种用于创建和管理数字内容的软件系统,它使得非技术人员也能方便地创建、编辑和发布网站内容。在这个特定的"CMS管理系统"中,我们可以看到它运用了一些高级的...
总结,文章管理系统CMS是企业、个人博客等发布和管理内容的关键工具。设计和实现一个适用于中小型文章管理的CMS系统,需要关注其核心功能、易用性、灵活性和安全性。通过持续优化和维护,可以满足不断变化的需求,为...
【标题】"基于PHP的熊海CMS网站综合管理系统源码.zip"揭示了这是一个采用PHP编程语言开发的网站内容管理系统(CMS)的源代码包。PHP是一种广泛使用的开源脚本语言,特别适合于Web开发,可以嵌入到HTML中,用于创建...
【标题】"网站管理系统CMS_C#门户网站cms程序.rar"揭示了这是一个基于C#编程语言开发的网站内容管理系统(CMS),特别适用于构建门户网站。C#是一种面向对象的编程语言,广泛应用于Windows平台上的软件开发,包括Web...
最新消息,CMS4J 现已推出 基于java / jsp技术开发的网站管理系统 CMS4J 2008 免费版 ,并且又推出了一套同样基于java / jsp技术开发的博客系统! CMS4J 2008 革新了原有的系统架构,开发了更为专业、便捷的后台...
【PHP + MySQL 开发CMS内容管理系统】 在当前的互联网环境中,内容管理系统(CMS)是构建网站的常用工具,尤其对于需要频繁更新和管理内容的站点来说。PHP与MySQL的组合是构建CMS系统的理想选择,因为它们都具有...
总之,这个"内容管理系统(cms)jar包集合"是一个宝贵的资源,它为Java开发者提供了构建高效、可扩展的内容管理系统所需的工具和库。通过理解和利用这些jar包的功能,开发者可以专注于业务逻辑,而不是底层实现,...
苹果CMS内容管理系统是一款广泛应用于网站建设和管理的开源平台,尤其适用于视频、文章等内容丰富的网站。其基于PHP语言开发,能够高效地处理大量数据并提供稳定的服务。PHP是一种服务器端脚本语言,尤其适合Web开发...
**PHP实现CMS内容管理系统详解** PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,尤其在Web开发领域,其灵活性和强大的功能使其成为构建动态网站和内容管理系统(CMS)的理想选择。CMS允许用户无需...