◆◆CMS系统基础问题(一)
xunua 2005-08-26 10:26:43 最近要做CMS系统,在网上看了许多资料,静态页面的缓存可能有2种形式:
静态缓存:是在新内容发布的同时就立刻生成相应内容的静态页面。
动态缓存:是在新内容发布以后,并不预先生成相应的静态页面,直到对相应内容发出请求时,如果前台缓存服务器找不到相应缓存,就向后台内容管理服务器发出请求,后台系统会生成相应内容的静态页面,用户第一次访问页面时可能会慢一点,但是以后就是直接访问缓存了。
静态缓存:CMS系统生成各频道和新闻的静态页,保存在CMS系统内,然后由自制的发布程序将这些静态页发布到实际的web server上,实际就静态文件的copy,并保持双方文件的同步。
动态缓存:使用反相代理,CMS系统不生成静态页(当然也可以生成),CMS系统可以就充当web server了,另一台缓存机器装上例如squid来做反相代理。
我没有做过CMS系统,我是这样想的
静态缓存
缺点:
1.是如果新闻的模板更新了,就要重新生成所有曾经发布的新闻的静态页。
2.当新闻总数太多时,同步就会很慢,所以文件就需要归档,归档的意思就是不再同步这些静态页,或不再频繁的同步。
3.有些动态程序,例如股票、BBS、网友发表的评论等等,是不是就一定要放在web server上了?如果将来要做负载均衡怎么办?不会做
优点:
1.同步频率可以自己设定,高和低都不会显著影响web server的性能,也不会显著影响CMS机器的性能,因为只是文件的copy和对照
2.(也是最看好的)如果我要更新几个月前的一篇新闻,更新后只需要等待同步的一次间隔时间,比如是20分钟,新的内容就会发布到web server上
动态缓存
优点:
1.如果新闻模板更新了,网友点击的新闻如果超时了,缓存服务器就立刻从CMS系统服务器上获取最新的新闻,这样网友就可看到新版的新闻页了。
2.对动态页也可以通过缓存来提速和减轻CMS(也就是web server)的负担
3.上面提到的动态程序可以直接放在CMS这台机器上,在缓存机器上需要做的就是对这些页面不缓存或缓存一部分,而且,可以用多个缓存机器做负载均衡。
缺点:
1.(最重要的,郁闷问题)据我所知,squid这个代理软件好像不能手工指定我要立刻删除某一网页的缓存,这样,如果有一篇2个月以前的新闻需要更改,在CMS系统上更新了,可是要等到缓存服务器对这篇新闻的缓存过期才能从CMS系统上获取新版本,而这种好久以前的新闻的缓存时间也一定比较长的,例如2天或更长(短了就不行了,起不到缓存的作用了,网友访问这篇新闻时经常要从CMS系统读),难道要等到2天之后网友才能看到更新过的新闻,如果是急事可怎么办呢?
2.(也重要)如果用户是直接访问web server,当使用IIS时,我可以限制某个二级域名的最大使用带宽。但是使用了反相代理,网友每次访问的就是缓存服务器,而且大部分时候他所访问的页面和文件就在缓存服务器上,跟web server没关系了,目前为止还没有找到在缓存服务器squid上对访问者限制带宽的方法。
从没做过,可能有很多地方说的不对,甚至驴唇不对马嘴,望大家见晾。
我们一起来研究研究吧。也请过来人指点迷津。