找回密码
 亲,注册吧

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

查看: 21421|回复: 583

四、Discuz x2.5 缓存机制

[复制链接]
发表于 2013-12-24 00:17:14 | 显示全部楼层 |阅读模式
缓存类型
缓存机制简单的说就是将一些重复操作的结果集保存下来,在收到同样的操作时直接从缓存的结果集中取出相应的数据直接使用,这样做的好处是降低重复性的解析或者SQL查询之类的动作,从而有效的缓解服务器的压力。在 Discuz! X2.5 中用到了模板缓存、文件缓存、数据缓存的缓存方法。
模板缓存
在Discuz产品中采用的是预编译的缓存机制,当程序调用模板过程中先去检测是否已经存在缓存,如果存在已编译后的模板文件,则直接调用编译的后的模板缓存。否则进行一次模板编译,工作原理如下:
cache_template.jpg 文件缓存
在config\config_global.php中有这么一个配置
  1. $_config['cache']['type'] = 'sql'; // 缓存类型 file=文件缓存, sql=数据库缓存
复制代码
当这个配置改成file时,Discuz生成的缓存将通过方法写入文件中。文件缓存存储在“data\cache”目录下,使用文件缓存的好处是,当你的服务器存在MySQL压力较高时,可以通过file的缓存机制缓解MySQL的压力,这种的缓存机制是用服务器的IO来换取MySQL的读写频率。降低MySQL的压力。生成的缓存文件存储方式如下
  1. <?php
  2. //Discuz! cache file, DO NOT modify me!
  3. //Identify: 964f76bca4d88d77c295870f0dc0c9c3

  4. $domain = array (
  5. 'defaultindex' => 'portal.php',
  6. 'holddomain' => 'www|*blog*|*space*|*bbs*',
  7. 'list' =>
  8. array (
  9. 'aaaa.bbs.cndoing.org' =>
  10. array (
  11. 'id' => '1',
  12. 'idtype' => 'subarea',
  13. ),
  14. ),
  15. 'app' =>
  16. array (
  17. 'portal' => '',
  18. 'forum' => '',
  19. 'group' => '',
  20. 'home' => '',
  21. 'mobile' => '',
  22. 'default' => '',
  23. ),
  24. 'root' =>
  25. array (
  26. 'home' => '',
  27. 'group' => '',
  28. 'forum' => '',
  29. 'topic' => '',
  30. 'channel' => '',
  31. ),
  32. );
  33. ?>
复制代码

这样在程序调用时直接引入缓存文件就可以调用了。
数据缓存
目前Discuz!中支持的内存优化接口有 Memcache、eAccelerator、Xcache 三种,当你的服务器中安装了其中的任一一个缓存插件后,可以通过配置config\config_global.php来开启缓存,配置项如下:
  1. //内存变量前缀, 可更改,避免同服务器中的程序引用错乱
  2. $_config['memory']['prefix'] = 'discuz_';

  3. $_config['memory']['eaccelerator'] = 1; // 启动对 eaccelerator 的支持
  4. $_config['memory']['xcache'] = 0; // 启动对 xcache 的支持
  5. $_config['memory']['memcache']['server'] = ''; // memcache 服务器地址
  6. $_config['memory']['memcache']['port'] = 11211; // memcache 服务器端口
  7. $_config['memory']['memcache']['pconnect'] = 1; // memcache 是否长久连接
  8. $_config['memory']['memcache']['timeout'] = 1; // memcache 服务器连接超时
复制代码
缓存原理
缓存更新原理如下:
cache_updatecache.jpg
以下是缓存的工作原理,在开发过程中当你调用到缓存时,只需要确认你要使用的缓存名称,然后调用loadcache($cachenames, $force)就可以获取到你原先保存的缓存内容。
cache_loadcache.jpg
缓存调用loadcache 函数
缓存调用方式可以直接传给loadcache($cachenames, $force = false)一个缓存名称后就可以获取到缓存数据。例如:
  1. loadcache('plugin');
复制代码
执行上面的调用后就可以在$_G['cache']['plugin']中获取到相应的缓存数据
updatecache 函数
缓存更新,在你对相应的缓存数据操作完后只需要调用updatecache($cachename = ), 传给要更新的缓存名称,新的缓存数据就会通过相应的脚本生成新的缓存数据。例如:
  1. updatecache('plugin');
复制代码






该会员没有填写今日想说内容.
发表于 2014-5-17 10:51:27 | 显示全部楼层
路过,支持一下啦
0 该用户已被删除
发表于 2014-5-17 21:12:51 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2014-5-18 15:05:42 | 显示全部楼层
真是 收益 匪浅
0 该用户已被删除
发表于 2014-5-19 09:37:19 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-5-20 14:12:33 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-5-21 02:13:22 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-5-22 01:34:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

716

主题

835

回帖

3761

积分

版主

My life

Rank: 13Rank: 13Rank: 13Rank: 13

积分
3761
QQ
发表于 2014-5-23 11:42:03 | 显示全部楼层
我是个凑数的。。。
0 该用户已被删除
发表于 2014-5-24 23:17:43 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

40

主题

574

回帖

762

积分

中学生

Rank: 3Rank: 3

积分
762
发表于 2014-5-26 05:31:52 | 显示全部楼层
支持一下:lol
0 该用户已被删除
发表于 2014-5-26 22:45:10 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-5-27 15:48:17 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-5-28 08:55:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-5-28 23:40:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2014-5-30 10:20:25 | 显示全部楼层
我是来刷分的,嘿嘿
0 该用户已被删除
发表于 2014-5-31 06:39:07 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

1

主题

327

回帖

336

积分

中学生

Rank: 3Rank: 3

积分
336
发表于 2014-6-2 01:17:23 | 显示全部楼层
不错不错,楼主您辛苦了。。。
0 该用户已被删除
发表于 2014-6-2 12:25:42 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2014-6-3 09:35:25 | 显示全部楼层
我是来刷分的,嘿嘿
0 该用户已被删除
发表于 2014-6-4 02:24:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-6-4 09:17:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

0

主题

268

回帖

269

积分

小学生

Rank: 2

积分
269
发表于 2014-6-6 02:11:13 | 显示全部楼层
找到好贴不容易,我顶你了,谢了
0 该用户已被删除
发表于 2014-6-6 17:42:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2014-6-6 22:16:06 | 显示全部楼层
找到好贴不容易,我顶你了,谢了

0

主题

279

回帖

282

积分

小学生

Rank: 2

积分
282
发表于 2014-6-7 11:28:36 | 显示全部楼层
找到好贴不容易,我顶你了,谢了
0 该用户已被删除
发表于 2014-6-8 13:54:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-6-9 06:03:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-6-9 16:03:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-6-10 04:55:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 亲,注册吧 微信登录

本版积分规则

快速回复 返回顶部 返回列表