启用Module Caching加快重建速度

Module Caching, 缓存, 截图如果日志很多的话,重建起来非常慢,如果对分类页面采用分页之后,那发布一篇日志要等好久才能发布完成。我们可以启用Module Caching来加速重建的速度,我拿曙光博客做了实验,速度的提升还是挺明显的。曙光博客现在有373篇日志,没有启用Module Caching之前重建所有的日志需要的时间是2分18秒,在启用Module Caching之后,重建所有的日志需要的时间是1分52秒。

Module Caching, 缓存, 截图

开启Module Caching

1、进入Preferences-->Publishing,拉到最下面,在Module Caching之前打勾。

2、进入Design-->Templates和Widgets,进入需要缓存的Templates,拉到下面,进入Templates Options,在Module Caching配置一个缓存清除的条件。

对启用Module Caching的模板的建议

1、该模板在所有的页面中需要一致。

2、如果该页面都是静态的Html页面,比如自己建的友情链接Widget,那没必要缓存,缓存的页面最好是有数据库交互的页面。

Module Caching, 缓存, 截图

Module Caching的工作原理

当静态发布的时候,会对某个Templates或者Widgets进行检查,如果该Templates或者Widgets没使用缓存,那么就直接从数据库读取发布,如果使用缓存,那么先检查该模块是否已经被缓存,如果已经缓存,那么检查该模块是否已经到期,如果到期了的话,那么从数据库中读取该模块,然后缓存,发布的时候直接读取缓存的内存,如果没到期的话就直接读取缓存的内容发布;如果该模块没有被缓存,那么和缓存过期的处理情况一样,先读取数据库,缓存下来,然后发布。(图截自majordojo的一个PPT)

启用Module Caching之后的结果

1、能加速重建速度。

2、对数据库的读取好像没什么减少。我监视了服务器的mysqld-nt这个进程,发现占用CPU的资源差不多,没有减少的痕迹,有的情况出现比没有启用Module Caching还要占用更多的CPU资源。我个人的理解是缓存的内容还是存储在数据库中,重建的时候还是要读取数据库还返回缓存的内容,但是读取的量应该比没有缓存的时候要少。可以采用Server Side Includes来把缓存保存在静态文件里面。

3、如果有启用Memcached,那么MT自动会把缓存的内容缓存在Memcached里面,对这个我还没试过,不知道重建速度会不会再加快(稍稍为加快重建速度,在启用Server Side Includes的时候,曙光博客的重建时间为1分45秒)。

MT上面的相关文档

不要把所有的都启用Module Caching,我只有启用几处。下面是我启用Module Caching的Template或者Widget:Navigation,Archives,Hot Entries,Tag Clouds这四个。

7 Comments

  1. 请教为何把最新评论设置为缓存,并设置在评论创建或修改时过期,可是当有评论产生时,最新评论列表依然没更新,只有重建所有文件,评论列表才能更新。

  1. 最新评论应该在Design->Widgets这里面管理,如果你是英文原版的话,这个Widget叫做Recent Comments。你看编辑框的下面有一个Template Options,对于你说的情况,建议你使用Server Side Include,但是你需要用PHP还解析html页面,它是使用PHP include来实现的。我把广告用Server Side Include起来,修改之后,只需要重建一篇文章,就可以把所有的广告都更新了。