## 呆错缓存组件
* 呆错缓存组件主要作用是通过网站后台可视化对缓存服务器进行配置;规范所有插件应用的配置存取方法等。
* 呆错框架支持的缓存类型有文件缓存、数据库缓存、Memcache缓存、Redis缓存、Xcache缓存等。
## 缓存配置
* DaiCuo框架根据TP的缓存功能开发了可视化缓存配置模块,只需通过“后台>设置>缓存设置”。
* 配置好缓存环境后、还需要设置对应的过期时间(循环标签缓存时间、单个内容缓存时间)。
## 缓存标识
缓存标识则是用来对普通数据的缓存进行读取/删除的KEY,具体请参考TP的[缓存模块](https://www.kancloud.cn/manual/thinkphp5/118131),DaiCuo框架默认使用的永久缓存标识有以下几个,可以方便开发者在有需要时直接调用。
* site_cache 缓存配置
* route_all 路由配置
* hooks_all 钩子配置
* config_应用名 插件应用配置
```
DcCache('route_all');//读取路由缓存的实例
```
## 缓存标签
* 缓存标签是用来对多个缓存标识归类后进行统一管理的标记;通过缓存标签可以对归类后的缓存进行管理。
* 通过DcDbSelect、DcDbFind函数查询的数据以(缓存标签+缓存标识)的规则生成缓存标签记录缓存,在新增/更新/删除数据后只需要对缓存标签进行删除则可以达到循环列表缓存、单个数据缓存的自动更新。
## 缓存自动更新
有时候我们需要在添加了数据或修改了数据时对缓存数据自动更新;DaiCuo框架在对数据新增、更新、删除后会自动通过清除缓存标签的方式对数据进行自动更新。简单一句话就是:“查询时按规则生成缓存标签;新增、更新、删除后将缓存标签规则更新或清空”。
> ThinkPhp对单个数据更新后已提供了自动更新缓存的[解决方案](https://www.kancloud.cn/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缓存