## 呆錯緩存組件
* 呆錯緩存組件主要作用是通過網站后臺可視化對緩存服務器進行配置;規范所有插件應用的配置存取方法等。
* 呆錯框架支持的緩存類型有文件緩存、數據庫緩存、Memcache緩存、Redis緩存、Xcache緩存等。
## 緩存配置
* DaiCuo框架根據TP的緩存功能開發了可視化緩存配置模塊,只需通過“后臺>設置>緩存設置”。
* 配置好緩存環境后、還需要設置對應的過期時間(循環標簽緩存時間、單個內容緩存時間)。
## 緩存標識
緩存標識則是用來對普通數據的緩存進行讀取/刪除的KEY,具體請參考TP的[緩存模塊](http://www.hmoore.net/manual/thinkphp5/118131),DaiCuo框架默認使用的永久緩存標識有以下幾個,可以方便開發者在有需要時直接調用。
* site_cache 緩存配置
* route_all 路由配置
* hooks_all 鉤子配置
* config_應用名 插件應用配置
```
DcCache('route_all');//讀取路由緩存的實例
```
## 緩存標簽
* 緩存標簽是用來對多個緩存標識歸類后進行統一管理的標記;通過緩存標簽可以對歸類后的緩存進行管理。
* 通過DcDbSelect、DcDbFind函數查詢的數據以(緩存標簽+緩存標識)的規則生成緩存標簽記錄緩存,在新增/更新/刪除數據后只需要對緩存標簽進行刪除則可以達到循環列表緩存、單個數據緩存的自動更新。
## 緩存自動更新
有時候我們需要在添加了數據或修改了數據時對緩存數據自動更新;DaiCuo框架在對數據新增、更新、刪除后會自動通過清除緩存標簽的方式對數據進行自動更新。簡單一句話就是:“查詢時按規則生成緩存標簽;新增、更新、刪除后將緩存標簽規則更新或清空”。
> ThinkPhp對單個數據更新后已提供了自動更新緩存的[解決方案](http://www.hmoore.net/manual/thinkphp5/118087),但循環列表里面的數據還是在緩存中,因此我們封裝了幾個函數在增加/修改/刪除數據后能快速對緩存進行管理。
**單個數據自動更新**
通過助手函數 DcDbFind 查詢單個數據后會自動根據緩存配置對數據進行緩存,其緩存標簽的規則為“主鍵名_主鍵名ID值”,在新增、修改、刪除后自動更新緩存的實例如下。
```
DcCacheTag('op_id_2', $cacheKey, $cacheValue, $cacheExpire);//更新配置ID為2的緩存數據
DcCacheTag('op_id_2', 'clear');//清空配置ID為2的緩存數據
```
**循環數據自動更新**
通過助手函數 DcDbSelect 查詢多個數據后會自動根據緩存配置對數據進行緩存,其緩存標簽的規則為“模型名/Item”,在新增、修改、刪除后不會自動更新,需要根據開發需求手動調用,實例如下。
```
DcCacheTag('common/Nav/Item', 'clear');//清空導航列表的緩存
DcCacheTag('common/Op/Item', 'clear');//清空配置列表的緩存
```
## 助手函數
* DcCache 緩存標識函數、支持清空緩存
* DcCacheTag 緩存標簽函數、支持清空緩存
* DcCacheResult 數據庫結果處理后觸發按標簽刪除緩存
* DcCacheKey 生成緩存KEY
* DcDbSelect 查詢多個數據并自動緩存(\*\*\*/Item)
* DcDbFind 查詢單個數據并自動緩存(\*\*\*/Detail)
* DcDbUpdate 數據修改后自動更新對應的Select/Detail緩存
* DcDbDelete 數據刪除后自動更新對應的Select/Detail緩存
* DcDbSave 數據新增后自動更新對應的Select/Detail緩存