【UCHome二次開發(fā)】緩存機制解析
來源:
發(fā)布時間:2010/4/24
瀏覽次數(shù):781
UCHome中的常用數(shù)據(jù)皆通過調用緩存來實現(xiàn)讀取,包括系統(tǒng)配置、用戶組、群組欄目、用戶欄目、詞語屏蔽、積分規(guī)則、廣告、用戶向導任務、模塊、MYOP默認應用等信息。其中模板緩存的使用前面單獨介紹過,見《【UCHome二次開發(fā)】模板解析》。
UCHome中常用數(shù)據(jù)是作為全局變量來使用的,具體用法可參考《【UCHome二次開發(fā)】全局變量》。以下著重介紹緩存機制的具體實現(xiàn)。
1、緩存數(shù)據(jù)文件的生成
UCHome生成的緩存數(shù)據(jù)文件位于/data/目錄下。
緩存生成的相關函數(shù)位于/source/function_cache.php文件中,生成緩存的函數(shù)羅列如下:
- config_cache() 更新配置信息緩存,生成緩存文件data_config.php
- usergroup_cache() 更新用戶組緩存,生成緩存文件data_usergroup.php
- profilefield_cache() 更新用戶欄目緩存,生成緩存文件data_profilefield.php
- profield_cache() 更新群組欄目緩存,生成緩存文件data_profield.php
- censor_cache() 更新詞語屏蔽緩存,生成緩存文件data_censor.php
- creditrule_cache() 更新積分規(guī)則,生成緩存文件data_creditrule.php
- ad_cache() 更新廣告緩存,生成緩存文件data_ad.php
- task_cache() 更新用戶向導任務,生成緩存文件data_task.php
- block_cache() 更新模塊,生成緩存文件data_block.php
- tpl_cache() 更新模板緩存,清空模板緩存文件夾/data/tpl_cache/下所有文件使模板緩存重新生成
- block_data_cache() 更新模塊緩存,清空模板緩存數(shù)據(jù)使緩存重新生成
- userapp_cache() 更新MYOP默認應用,生成緩存文件data_userapp.php
- app_cache() 更新應用名,生成緩存文件data_app.php
除了模板和模塊數(shù)據(jù)外,其他的只需調用對應的函數(shù)就可生成對應的緩存數(shù)據(jù)文件。具體緩存生成的數(shù)據(jù)格式可查看對應文件。
2、緩存數(shù)據(jù)文件的分析
我們來看一下其中一個緩存文件,群組欄目緩存data_profield.php文件,如下:
02 |
if (!defined( 'IN_UCHOME' )) exit ( 'Access Denied' ); |
03 |
$_SGLOBAL [ 'profield' ]=Array |
09 |
'formtype' => 'multi' , |
12 |
'manualmoderator' => 1, |
13 |
'manualmember' => 1 |
19 |
'formtype' => 'text' , |
22 |
'manualmoderator' => 1, |
23 |
'manualmember' => 1 |
第二行代碼保證了緩沖數(shù)據(jù)無法被直接調用,而要求在UCHome中才有效。當然這是君子協(xié)定,只要在調用代碼前define一下IN_UCHOME即可繞過驗證。
之后的代碼其實只是做了變量賦值,將群組欄目數(shù)據(jù)賦值到$_SGLOBAL['profield']中,因為之前$_SGLOBAL以被定義為global全局變量,因為群組欄目數(shù)據(jù)便能全局訪問了。
3、緩存數(shù)據(jù)文件的使用
從上面分析可看出,緩存數(shù)據(jù)文件其實就是php代碼文件,直接引入執(zhí)行。因而我們的緩存使用也就很方便了,只需將緩存文件使用include/include_once/require/require_once等函數(shù)引入進來即可使用,調用對應的變量來獲取緩存的數(shù)據(jù)。
但為了保證緩存的存在,使用時最好加一個檢測;如果緩存數(shù)據(jù)不存在,則先生成一遍緩存數(shù)據(jù)。綜合起來,緩存的代碼參考如下:
1 |
if (!@ include_once (S_ROOT. './data/data_usergroup.php' )) { |
2 |
include_once (S_ROOT. './source/function_cache.php' ); |
調用不同的緩存請更換對應的緩存文件和緩沖函數(shù)。
4、緩存數(shù)據(jù)文件的手動更新
在管理員成員的后臺高級管理里有一項是緩存更新,可用戶手動更新緩存,在系統(tǒng)全局配置變動后建議手動做一次緩存更新。