zoukankan      html  css  js  c++  java
  • 拆解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

  • 相关阅读:
    AngularJS概念概述和第一个使用例子
    什么是AngularJS
    AngularJS系列-翻译官网
    Unity3d 鼠标滚轮缩放效果
    Unity3d 正方体添加材质
    NGUI 由Empty创建Button
    NGUI Anchor三种type的不同
    【cocos2d-x 手游研发小技巧(5)获取网络图片缓存并展示】
    【cocos2d-x 手游研发小技巧(4)与Android混编实现换“头像图片”】
    【cocos2d-x 手游研发----博彩大转盘】
  • 原文地址:https://www.cnblogs.com/hongyin163/p/1553202.html
Copyright © 2011-2022 走看看