织梦dedecms缓存原理分析
发布时间:2019-11-01 10:44:01 来源: 点击:
织梦dedecms程序里面,有很多的地方都用到了缓存。
在织梦dedecms里面,不但存在模板缓存,重要数据的文件缓存。而且还引入了memcache缓存。首先我们看织梦dedecms的cache.helper.php,这个文件里面的函数主要有三个。 SetCache(),GetCache(),DelCache()三个关于dedecms缓存的操作函数。
织梦dedecms缓存主要存在文件缓存和memcache缓存两种。当后台配置了memcache服务器信息的时候。dedecms cache他会优先的选择使用memcache来缓存,如果不存在memcache服务器配置信息。那么将起用dedecms的文件缓存方式。
首先我们看dedecms的SetCache()。很简单, function SetCache($prefix, $key, $value, $timeout = 3600, $is_memcache = TRUE),我们先看这条,他就是通过使用key/value的方式来设置dedecms的缓存,而$prefix更多的是前缀,而$key就是通过对md5($sql)的一串字符串获取的。通过分析我们可以看出
在这里我们可以很清楚的认识到。如果dedecms应该说是结合的文件和memcache缓存两种方式的,为了防止缓存文件被盗用,我们可以在缓存文件的前头增加exit字符。当你需要使用的时候,完全可以替换掉,当正常的变量还原。
而dedecms缓存的key和缓存文件目录的生成,是通过对md5($key)后的值取某几个字符来做文件夹生成目录的。这样的好处是避免了很多缓存文件在指定的某几个缓存目录里面,造成缓存负荷太大,而影响缓存。
而取的dedecms的缓存的方式主要以下方式 function GetCache($prefix, $key, $is_memcache = TRUE)
我们可以分析出,当$key=md5($key)之后,先去memcache中取得,如果不存在,那么才考虑去dedecms的文件缓存中获取。
而织梦dedecms删除缓存也一样, function DelCache($prefix, $key, $is_memcache = TRUE)先删除memcache中的。
如果他不存在。将直接在织梦dedecms文件缓存中删除,最终完成dedecms整套缓存体系。
调用之前请先启用缓存助手函数
helper('cache');
在织梦dedecms里面,不但存在模板缓存,重要数据的文件缓存。而且还引入了memcache缓存。首先我们看织梦dedecms的cache.helper.php,这个文件里面的函数主要有三个。 SetCache(),GetCache(),DelCache()三个关于dedecms缓存的操作函数。
织梦dedecms缓存主要存在文件缓存和memcache缓存两种。当后台配置了memcache服务器信息的时候。dedecms cache他会优先的选择使用memcache来缓存,如果不存在memcache服务器配置信息。那么将起用dedecms的文件缓存方式。
首先我们看dedecms的SetCache()。很简单, function SetCache($prefix, $key, $value, $timeout = 3600, $is_memcache = TRUE),我们先看这条,他就是通过使用key/value的方式来设置dedecms的缓存,而$prefix更多的是前缀,而$key就是通过对md5($sql)的一串字符串获取的。通过分析我们可以看出
这段代码告诉我们,如果你是存在memcache服务器,并且该服务器可用。那么将优先使用memcache缓存。$result = $GLOBALS ['mc_' . $mc_path ['host']]->set ( $key, $value, MEMCACHE_COMPRESSED, $timeout ),通过设置memcache来完成对sql数据库查询的缓存。如果不存在,那么将起用dedecms的文件缓存。
- if (! empty ( $cache_helper_config['memcache'] ) && $cache_helper_config['memcache'] ['is_mc_enable'] === 'Y' && $is_memcache === TRUE)
- $key = substr ( $key, 0, 2 ) . '/' . substr ( $key, 2, 2 ) . '/' . substr ( $key, 4, 2 ) . '/' . $key;
- $tmp ['data'] = $value;
- $tmp ['timeout'] = time () + ( int ) $timeout;
- $cache_data = "<?php exit('dedecms');?>\n\r".@serialize ( $tmp );
- return @PutFile ( DEDEDATA . "/cache/$prefix/$key.php", $cache_data);
在这里我们可以很清楚的认识到。如果dedecms应该说是结合的文件和memcache缓存两种方式的,为了防止缓存文件被盗用,我们可以在缓存文件的前头增加exit字符。当你需要使用的时候,完全可以替换掉,当正常的变量还原。
而dedecms缓存的key和缓存文件目录的生成,是通过对md5($key)后的值取某几个字符来做文件夹生成目录的。这样的好处是避免了很多缓存文件在指定的某几个缓存目录里面,造成缓存负荷太大,而影响缓存。
而取的dedecms的缓存的方式主要以下方式 function GetCache($prefix, $key, $is_memcache = TRUE)
我们可以分析出,当$key=md5($key)之后,先去memcache中取得,如果不存在,那么才考虑去dedecms的文件缓存中获取。
而织梦dedecms删除缓存也一样, function DelCache($prefix, $key, $is_memcache = TRUE)先删除memcache中的。
如果他不存在。将直接在织梦dedecms文件缓存中删除,最终完成dedecms整套缓存体系。
调用之前请先启用缓存助手函数
helper('cache');
精彩推荐相关内容
- (2019-10-30)织梦dedecms中的{dede:php}{/dede:php}的详细用法
- (2019-08-23)织梦DedeCms出现Safe Alert: Request...
- (2019-11-14)Dedecms列表分页页数太多以及内容页分页...
- (2019-09-10)阿里云ecs提示的dedecms各种漏洞以及修...
- (2019-12-31)织梦DEDECMS会员发布文章修改后"数据校...
- (2019-06-28)dedecms其他模块上传图片有汉字时候无法...
- (2019-10-30)dede织梦_高级功能function扩展-dede @me使用
- (2019-07-04)dedecms小程序插件正式上线,一键安装无...
- (2019-11-01)织梦dedecms缓存原理分析
- (2019-08-23)织梦DedeCMS后台模块管理列表不显示
相关栏目
热门文章
最新图文
-
- Time:2019-12-31
-
dede织梦_高级功能function扩展-dede @me使用
- Time:2019-10-30
-
- Time:2019-08-23
-
- Time:2019-07-04
-
- Time:2017-05-08
-
- Time:2014-06-18
-
- Time:2014-06-09
-
- Time:2013-07-20
评论排行
- (5)条phpcms筛选功能(经典无错)
- (4)条朋友圈转“贩卖儿童判死”
- (4)条微信即将封杀分销平台?传30
- (3)条做优化,十个最让用户反感的
- (2)条phpcms v9字段筛选教程
- (2)条【织梦bug】织梦5.7进入后台
- (2)条phpcms v9通用api开发教程
- (1)条网页制作技巧教程:网页无障
- (1)条贪吃的阿里:阿里2年疯狂并
- (1)条史上最全SEO高级搜索命令大全