拆解discuz!NT之一:缓存模块

最近一直在改Discuz!NT,感觉Discuz!NT做出了就是让别人来改的,呵呵,因为它虽然很完善,但是实际使用的时候总有不如意的地方,要想改它,就要很好的了解它,不然牵一发而动全身啊,我改的版本是2.5的,已经有2.6的版本了,不过是没办法升级使用了,因为改的太多了

改Discuz!NT确实让人学到不少的东西,这个东西里藏着大多数系统开发必备的技术,虽然我还不能依依讲清楚,至少能把Discuz!NT拆了,就像小时候喜欢拆玩具一样,一件一件拆了,拆成一个一个的小模块,那以后需要的时侯不就可以直接拿来用了吗?所谓它山之石嘛!

一直好奇的是Discuz!NT的缓存模块,这次就来学学他,Discuz!NT里大量使用缓存,所以性能那么的好。

首先是这个缓存模块中组织缓存对象的方法,看来是为了使缓存的对象具有一定层次结构,它里面利用XML来保存这个结构,通过xpath就可以获得某个缓存对象的节点,这个节点就缓存对象的键值,利用这个键值再去缓存中获取或删除对象。

利用xml来组织的确实比较好,当你需要批量更新缓存的时候,比如在Discuz!NT后台就有更新缓存的功能,你可以通过xpath获得一个节点集,这样就可以轻松更新你想要更新的缓存对象了。

其次,这里还用到了策略这模式,Discuz!NT里用了更多的设计模式,包括工厂方法,模板方法,策略者等等,

利用策略者模式将实际组织对象的模块和存储对象的模块分离开,这样如果以后关于.NET缓存出新版本时,可以轻松的扩展,而不用改原来的写好的代码,很好很好。

下载地址:Discuz.Cache.rar

原文地址:https://www.cnblogs.com/hongyin163/p/1553202.html