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的网友发表了评论查看完整内容
include template('XXX');
parse_template();
这2个部分