« 上一篇下一篇 »

静态化内容的更新策略

对于静态化内容更新策略,一般有以下两种:在数据更新时重新生成静态化内容;定时重新生成静态化内容。

    对于前者,在数据更新的时候重建静态化缓存,往往由用户的某些动作触发,比如新闻站点的网络编辑发表一篇新闻后,程序便创建一个新的静态化新闻页面,同时更新新闻列表页面。显然,这种方式在数据更新频繁时存在大量重建静态内容的开销,尤其是当一个动作引发大量静态内容需要更新时,比如大型新闻站点的CMS(内容管理系统)在工作高峰期间,所有编辑都修改新闻标题而引发大量的页面或局部页面频繁更新,同时伴随着频繁的数据库操作,这将导致CMS系统的服务响应大幅度降低,当然,这可能并不直接影响现存静态化页面的访问,但是不要忘了,这种更新机制也正是静态化缓存方案的一部分,所以它的性能也至关重要。另一方面,如果站点的静态化内容需要分发到更多的服务器,那么频繁的更新也会给文件的同步带来较大的压力。

    一个常用的办法是引入延迟更新机制,将更新任务放入队列,一旦队列写满或者达到超时时间,便一次性将它们更新到磁盘,这听起来有点像文件系统的磁盘缓冲区的设计动机,没错,你也可以把它理解为静态化缓冲区。

    另一种更新策略是定时重建静态化内容,它一般通过定时任务来执行,比如crontab或者专用的daemon程序,然后通过CMS系统进行方便的管理。如果站点存在大量的静态化内容,而且它们的性质和实时性需求不尽相同,我们可以通过维护一定的对应关系来制定特定范围的静态化内容进行重建,一个常见的例子是,对于热门新闻列表进行每隔1分钟的定时更新,而对于其他重要级别稍低的内容可以延长更新时间,从而节省开销。

    通常,这两种更新策略可以互相弥补,共同应用在站点的静态化方案中。如何选择并很好地使用它们,需要在重建性能和内容及时性需求之间取其平衡。

« 上一篇下一篇 »