Discuz!X/缓存机制和使用方法

来自Blueidea
跳转至: 导航搜索

Discuz!X的缓存支持五种缓存方式,其优先度分别为:memcache,eaccelerator,xcache,file,sql。前三种是使用第三方的缓存,服务器环境得自己单独配置,只需要config_global.php里配置CONFIG MEMORY一段就好了,关于这一部分的代码解读参考 DiscuzX1.5缓存系统流程


最后的两种是原生支持的,需要config_global.php里配置CONFIG CACHE一段,个人感觉sql的会好一些,因为用的是内存缓存,但不方便查看和开发调试,file是文件缓存,好处是可以随时打开看看,调试方便。


好了,现在来说说怎么使用缓存,如果一个网站有一些数据是不经常变动,但又使用频繁的,就可以用缓存了。比如论坛版块,栏目分类等。如果要增加一个新的缓存数据要怎么办呢?

1.要在\source\function\cache里增加一个缓存文件,定义数据的获得方式和内容。文件名和方法名按照规范来定义,会自动加入缓存机制,后台更新缓存时,都会自动执行,很容易就增加了一个新的数据缓存。

2.手动更新缓存和使用缓存呢,只需参考以下代码

//读缓存,如果没有更新的方法,就需要引入cache库
require_once libfile('function/cache');
//xxxx是你的缓存名
updatecache('xxxx');
//执行多个更新缓存
updatecache(array('xxxx','yyyy')); 
//载入缓存
loadcache('xxxx');
//强制载入更新的缓存
loadcache('xxxx',true);
//使用缓存
print_r($_G['cache']['xxxx']);

插件缓存,放在插件目录下的 cache 目录,命名规则一样。代码详见文档。

另外可以用 writetocache 强制为文件缓存