在正常运行的Discuz!系统文件夹里面会有一个forumdata文件夹,这个是论坛记录和缓存文件的存放目录,一般这些文件都是自动生成的,在 forumdata/cache/里面存储的都是一些Discuz!的基本设置和一些常使用的值,这些值一般在系统初始化的时候就保存在$_DCACHE 全局变量中,在后面的操作中将可以简单地使用它们进行功能上的判断。
(1)主动缓存,也就是只在用户操作后台时,由Discuz!系统去删除原有缓存进行更新的缓存。它们普遍存在于forumdata/cache/目录 中,比如说/forumdata/cache/cache_settings.php保存了整个系统的核心设置,一般情况是不会更新的,只有后台修改了比 如站点名称等关键信息的时候才会去主动更新这个缓存文件。还有用于保存用户组和管理员组相关信息的两类缓存文件:
/forumdata/cache/usergroup_’.intval($groupid).’.php
/forumdata/cache/admingroup_’.intval($adminid).’.php
另外还有在index、forumdisplay、viewthread、post、blog、topicadmin、register、 archiver几个模块中的时候分别会使用的cache_’模块名‘.php的缓存。在include/common.inc.php中的流程可以看 到,这些类似的主动缓存都有一个特点:统一进行引用(include),最后进行失败检测,最后再对失败的缓存(比如说文件丢失或者是上次更新还没生成这 样的情况下)统一进行重新生成的操作,具体的生成方法见/include/cache.func.php中的updatecache函数。
(2)被动缓存,也就是缓存的生成并非是由用户手动更新的,而是在系统里判断是否需要生成缓存,需要缓存多长时间,由系统自身来完成整个过程。很典型的代 表有帖子内容的缓存生成过程。帖子内容的缓存路径被cache_setting.php里定义为一个可以由用户修改的值,默认是在 forumdata/threadcaches下,由viewthread.php里的逻辑可以看到,当满足使用缓存条件的时候(一般情况是第一页的内 容),系统会执行viewthread_loadcache函数,此函数会判断缓存是否过期,如果不过期就执行函数中间读取缓存的操作,最后 Discuz!直接巧妙地在函数中die出一段javaScript,结束访问。专研Discuz!代码的你可能会很疑惑,究竟是什么时候生成的缓存 呢?include文件夹里有一个global.func.php,这个文件包括了整个Discuz!系统使用到的全局方法,其中有一个叫output的 函数,在函数里判断了是否可以缓存当前的页面,并且使用ob_get_contents函数直接缓存页面。
提示:ob_start()在服务器打开一个缓冲区来保存所有的输出。所以在任何时候使用echo ,输出都将被加入缓冲区中,直到程序运行结束或者使用ob_flush()来结束。然后在服务器中缓冲区的内容才会发送到浏览器,由浏览器来解析显示。函 数ob_end_clean 会清除缓冲区的内容,并将缓冲区关闭,但不会输出内容。此时得用一个函数ob_get_contents()在ob_end_clean()前面来获得缓 冲区的内容。这样的话, 能将在执行ob_end_clean()前把内容保存到一个变量中,然后在ob_end_clean()后面对这个变量做操作。
魔客吧温馨提示:还在苦苦寻找discuz模板吗?来魔客吧 discuz论坛模板 频道看看吧,说不定有你喜欢的哦!
分享到 更多 <script type="text/javascript" id="bdshell_js"></script><script type="text/javascript">document.getElementById("bdshell_js").src = "http://share.baidu.com/static/js/shell_v2.js?cdnversion=" + new Date().getHours();</script> 本文地址:http://www.moke8.com/article-21606-1.html文章标题:discuz缓存机制详解 收藏邀请 最新分享资源
包装材料生产线设备织梦模板
dedecms模板 by moke响应式淘宝美工摄影类织梦模板
dedecms模板 by moke响应式金属制品dedecms模板
dedecms模板 by moke响应式无人机电子产品dede模板
dedecms模板 by moke最新评论
相关分类
- discuz教程
- discuzx教程
- phpwind教程
- dedecms教程
- phpcms教程
- wordpress教程
- ecshop教程
- php168教程
- shopex教程
- 帝国cms教程
精品推荐
精华 中英双语响应式电子企业织梦模板
dedecms模板 by moke极品资源
极品 高端建筑装饰带手机版十配色织梦模板
dedecms模板 by moke原创模板
魔币 多配色创意metro风格企业
下载排行
- 01包装材料生产线设备织梦模板
资源分类
企业网站模板 企业网站源码 个人网站模板 个人网页模板 手机wap网站 门户网站模板 商业源码 淘宝客程序 html5网站 网站后台模板 html网页模板 学校网站模板 <script type="text/javascript">var cookieLogin = Ajax("TEXT");cookieLogin.get("connect.php?mod=check&op=cookie", function() {});</script><script type="text/javascript">_attachEvent(window, 'load', getForbiddenFormula, document);function getForbiddenFormula() {var toGetForbiddenFormulaFIds = function () {ajaxget('plugin.php?id=cloudsearch&formhash=eb2ec129');};var a = document.body.getElementsByTagName('a');for(var i = 0;i < a.length;i++){if(a[i].getAttribute('sc')) {a[i].setAttribute('mid', hash(a[i].href));a[i].onmousedown = function() {toGetForbiddenFormulaFIds();};}}var btn = document.body.getElementsByTagName('button');for(var i = 0;i < btn.length;i++){if(btn[i].getAttribute('sc')) {btn[i].setAttribute('mid', hash(btn[i].id));btn[i].onmousedown = function() {toGetForbiddenFormulaFIds();};}}}</script>联系我们 | 关于我们 | 招商加盟 | 版权声明 | 帮助中心 | 广告服务 | 网站地图
欢迎浏览魔客吧提供的 discuz缓存机制详解 信息,若本站中的信息侵犯了您的权益,请与本站管理员联系Copyright @ 2010-2015 魔客吧 版权所有 蜀ICP备09014119号 川公网安备51050202000165号 <script type="text/javascript" src="http://tcss.qq.com/ping.js?v=1VERHASH" charset="utf-8"></script><script type="text/javascript" reload="1">pgvMain({"discuzParams":{"r2":"5238379","ui":0,"rt":"portal","pn":1,"qq":"000"},"extraParams":""});</script>
积分 0, 距离下一级还需 积分 <script type="text/javascript">_attachEvent(window, 'scroll', function(){showTopLink();});</script><script>(function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https'){ bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else{ bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s);})();</script> <script type="text/javascript"> var tipsinfo = '5238379|X2.5|0.6||0||0|7|1526822216|fc6a5553eabaa1a3cb4d239c13bee51b|2'; </script> <script src="http://discuz.gtimg.cn/cloud/scripts/discuz_tips.js?v=1" type="text/javascript" charset="UTF-8"></script><script type="text/javascript" src="https://idm-su.baidu.com/su.js"></script>