返回舊版| 微信建站| 我要建站 | 建站學習 | 加入收藏
DEDECMS當前位置:首頁 > cms教程 > 綜合cms > DEDECMS > 正文

織夢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)的一串字符串獲取的。通過分析我們可以看出
  1. 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的文件緩存。
  1. $key = substr ( $key, 0, 2 ) . '/' . substr ( $key, 2, 2 ) . '/' . substr ( $key, 4, 2 ) . '/' . $key; 
  2.  
  3.   $tmp ['data'] = $value; 
  4.  
  5.   $tmp ['timeout'] = time () + ( int ) $timeout; 
  6.  
  7.   $cache_data = "<?php exit('dedecms');?>\n\r"[email protected] ( $tmp ); 
  8.  
  9.   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');

相關欄目
熱門文章
最新圖文
評論排行
版權所有:鄭州騰石網絡科技有限公司 備案信息:豫ICP備18019117號
站長QQ:2863868475 業務合作咨詢:15137100750(同微信)
本站所有投放的廣告是有其他網站提供,不代表本站立場,同時網站首頁廣告位對外出租詳情咨詢本站站長!同時歡迎廣大站長加入個人建站團隊
  • 建站客服
  • CMS仿站
  • CMS學習
  • 技術交流群:336572814
辽宁十一选五一定牛图表