外贸出口平台网站,wordpress侧边浮动,做编程的 网站有哪些内容,夜猫直播视频下载摘要#xff1a;内容管理系统(CMS)在各大商业站点和门户站点中扮演着重要的角色#xff0c;是内容有效组织和快速发布极为重要的基础平台。目前主流的内容发布系统都使用静态页面进行内容发布#xff0c;在我们的实际使用过程中我们深切的感受到静态内容发布存在着很多弊端内容管理系统(CMS)在各大商业站点和门户站点中扮演着重要的角色是内容有效组织和快速发布极为重要的基础平台。目前主流的内容发布系统都使用静态页面进行内容发布在我们的实际使用过程中我们深切的感受到静态内容发布存在着很多弊端本文讨论全搜索目前正在使用的基于动态可缓存内容发布系统的考虑和实现。 一、什么是内容管理系统 内容发布系统也即CMS英文全称为Content management system用于对企业业务数据进行组织、管理和发布这里的内容不仅仅指文字内容还包括图片、声音、视频、Flash等富媒体资源CMS的应用极大的提高了站点的建设效率并降低了维护成本。目前市面上的CMS种类繁多开源的内容管理系统主要有 PHP 国内PHPCMSVeryCMSDeDeCMSEmpireCMS,HBCMS 国外MamboJoomla!XOOPSDrupal 更多见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有个显著的特点就是发布多修改少越早的数据越少被访问应该说这100200个G的数据中有99%以上的数据是有效期过后很少或再也没被访问过的所以磁盘几乎是白白的被浪费了。 所以在我们的实际使用过程中我们更倾向于动态内容执行多重cache的方式新的系统中我们是这样做的最后完成的系统非常简单并在Squid的帮助下达到静态页面的执行性能。 四、如何实现动态可缓存的内容管理系统 (可缓存的内容管理系统用户访问流程) 实现过程 1. 所有前台页面使用URL rewrite重写成.html进行访问方便搜索引擎收录。 2. WEB程序执行时向Squid服务器发送Expires头用于控制squid服务器的缓存时间。Expires用户设置Squid服务器和客户端的缓存时间。如 PHPphp代码header(Expires: . gmdate(D, d M Y H:i:s, time() 120). GMT); //缓存120秒 Java 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 - 点击:15次 转载于:https://www.cnblogs.com/codecrazy/archive/2010/10/15/1851933.html