您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
discuz缓存机制介绍
卫耿羿2025-06-27Discuz教程已有人查阅
导读Discuz的缓存同样分了主动缓存和被动缓存。从功能上来说,主动缓存一般用到管理员对全站的设置,等等需要手动更新的地方,这些地方的数据都有一个特点
Discuz的缓存同样分了主动缓存和被动缓存。从功能上来说,主动缓存一般用到管理员对全站的设置,等等需要手动更新的地方,这些地方的数据都有一个特点,那就是它们的更新可能性很小,平时不需要自动更新;Discuz!的被动缓存,一般分布在诸如帖子内容显示,用户信息更新这些地方,这些地方的更新基本上都是因为用户使用了某一特定的功能时所激发的。
在正常运行的Discuz!系统文件夹里面会有一个forumdata文件夹,这个是论坛记录和缓存文件的存放目录,一般这些文件都是自动生成的,在forumdata/cache/里面存储的都是一些Discuz!的基本设置和一些常使用的值,这些值一般在系统初始化的时候就保存在$_DCACHE全局变量中,在后面的操作中将可以简单地使用它们进行功能上的判断。
(1)主动缓存,也就是只在用户操作后台时,由Discuz!系统去删除原有缓存进行更新的缓存。它们普遍存在于forumdata/cache/目录中,比如说/forumdata/cache/cache_settings.php保存了整个系统的核心设置,一般情况是不会更新的,只有后台修改了比如站点名称等关键信息的时候才会去主动更新这个缓存文件。还有用于保存用户组和管理员组相关信息的两类缓存文件:
(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!系统文件夹里面会有一个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的NT代码阅读分析
图文教程
DiscuzNT安装配置问题
这几天在看Discuz!NT的相关资料,安装时出现了一些问题,感觉挺麻烦的,没有duwamish和petshop安装时那么简单容易,discuz配置文件有好几个
Discuz全站HTTPS访问的实现方法
在主机开启 SSL 功能后,https 访问倒是正常的,但浏览器上的绿色小锁并没有出现,而且网站导航上的链接还是 http 的。网站开启 https 加密访问, 现在基本已经成为标配了。之前“
Python实现Discuz论坛的自动POST登录发贴回帖实例
下面简单说下过程:首先是得到了login的post地址:几个关键的parameter是loginurl为登录面页,用于获得formhash的值loginsubmiturl为post登录参数的地址
调用discuz编辑器的步骤方法
前面讲了如何开发一个discuz的特殊主题插件,详情可在此查看discuz特殊主题插件开发步骤和犯的愚蠢错误。上一篇文章讲解的是一些简单的开发步骤,不涉及到具体的编码。
相关源码
-
帝国cms7.5大型游戏资讯门户网站源码免费下载本模板基于帝国CMS7.5内核开发,为大型游戏资讯门户网站设计。模板自带响应式手机版,适配多种终端设备。内容架构针对游戏行业特点优化,支持游戏资讯、评测、攻略等内容类型的发布与管理。查看源码 -
自适应响应式绿色装修公司定制家居类pbootcms网站下载(自适应手机端)响应式全屋装修定制家居类网站pbootcms模板 绿色装修公司网站源码下载PbootCMS内核开发的网站模板,该模板适用于装修定制网站、装查看源码 -
(自适应)简繁双语机械矿山矿石五金设备pbootcms源码下载本模板基于PbootCMS开发,主要面向机械五金、矿山矿石设备等行业,支持简体中文和繁体中文双语切换。采用响应式布局技术,确保在各种设备上都能获得良好的浏览体验。模板设计注重展示工业设备的专业性和技术特点,帮助企业建立可靠的线上展示平台。查看源码 -
(响应式)轴承机械五金零件产品pbootcms落地推广单页源码下载为轴承、机械零件等工业产品打造的响应式单页模板,基于PbootCMS内核开发,助力企业快速构建专业级产品展示页面。模板采用工业风设计语言,突出产品参数与性能优势,适用于设备制造商、零部件供应商等B2B场景推广。查看源码 -
响应式WordPress简约博客主题Alt_BlogAlt_Blog主题该模板为博客内容展示设计,采用简约现代的风格理念,打造清晰的内容呈现平台。响应式布局确保在不同设备上都能获得良好的浏览体验,帮助博主更好地展示和分享内容。查看源码 -
(自适应)大气壁挂炉暖气设备家用电器模板带加盟申请和下载资料为壁挂炉、暖气片等供暖设备企业设计的PbootCMS模板,通过响应式技术实现跨终端展示产品参数和技术细节。后台统一管理确保采暖系统数据、服务网点信息实时同步更新查看源码
| 分享笔记 (共有 篇笔记) |
