校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 網站建設 > 建站知識 > dedecms緩存原理分析

dedecms緩存原理分析

POST TIME:2017-11-30 16:58

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)的一串字符串獲取的。通過分析我們可以看出

if (! empty ( $cache_helper_config['memcache'] ) && $cache_helper_config['memcache'] ['is_mc_enable'] === 'Y' && $is_memcache === TRUE)
這段代碼告訴我們,如果你是存在memcache服務器,并且該服務器可用。那么將優先使用memcache緩存。$result = $GLOBALS ['mc_' . $mc_path ['host']]->set ( $key, $value, MEMCACHE_COMPRESSED, $timeout ),通過設置memcache來完成對sql數據庫查詢的緩存。如果不存在,那么將起用dedecms的文件緩存。

$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整套緩存體系。



收縮
  • 微信客服
  • 微信二維碼
  • 電話咨詢

  • 400-1100-266
主站蜘蛛池模板: 平和县| 长泰县| 花莲县| 永善县| 永德县| 东光县| 白玉县| 炉霍县| 阿拉尔市| 龙江县| 萍乡市| 宜兴市| 通化市| 嵩明县| 贵定县| 宜城市| 平泉县| 枣庄市| 乌兰浩特市| 平舆县| 洱源县| 鹤壁市| 沿河| 两当县| 酒泉市| 吴旗县| 三门县| 永吉县| 汕头市| 伊宁县| 诸城市| 普兰店市| 怀化市| 库尔勒市| 宜黄县| 莒南县| 民丰县| 都江堰市| 大同市| 津南区| 方城县|