Discuz缓存机制分析(1)

发布人:blankyao  时间:2007-11-10 03:34  来源: Php Question  查看: 411次

QUOTE:

文章来自blankyao.cn及phpq.net
请尊重版权
缓存技术,不管从前还是现在,从来都是被一些cms或其他系统所重视的,从速度,从效率,没有理由不使用缓存..... 在《对PHP缓存的初识》一文中说过一点关于缓存的东西,那篇文章主要说的是一个检查访问者的IP是否被封的例子,按照水水说的应该属于“生成缓存文件”这一类。而今天我要总结的是另一个层次上的缓存应用。
在discuz里面有一个forumdate文件夹,这个是论坛记录和缓存文件的存放目录,一般这些文件都是自动生成的,我们关心的是其中的缓存文件,在./forumdate/cache/里面存储的都是一些discuz!的基本设置和一些常量(一般在 $_DCACHE),比如《对PHP缓存的初识》一问中举的判断IP是否被BAN就属于discuz!的基本设置,在./forumdate/template目录下即缓存着已经预编译好的模板文件,想一下,在第一次装上discuz论坛系统打开首页时是不是有类似“缓存文件建立成功,请刷新”的提示,那就是第一次执行缓存动作,生成. /forumdate/template目录下的东西。
     在这里,我先大致介绍下流程吧,在用户请求一个页面时,程序会首先到./forumdate/template看一下有没有预编译好的文件,如果有的话,则直接拿来用,如果没有或者缓存过期的话则重新编译,生成文件缓存在./forumdate/template里,想一下phplib模板的处理方式,每次请求页面时都要用正则的方式来匹配模板,而在discuz!的处理机制中是先用正则匹配模,预编译好放在缓存文件中,每次用户请求页面就直接从缓存中提取,时间,效率自然就来了吧!
    看下例如index.php,member.php下面都有个include template('XXX');在./include/global.func.php里有template()这个函数,在template函数里又调用到parse_template()这个函数另外在cache.func.php中还有一个长达1528的程序,这些程序是怎么运转的呢? discuz的缓存机制是怎样处理每一个细节上的问题的呢?
请继续关注blankyao.cn及phpq.net
电池没电了,明天接着分析
BS下FCK的速度

文章评论

共有 2 位PhpQ的网友发表了评论查看完整内容

  • kimi发表评论: 2007-11-10 23:51:30
  • 主要还就是
    include template('XXX');
    parse_template();
    这2个部分
  • blankyao发表评论: 2007-11-11 00:17:02
  • 请继续关注

PHP论坛热门