[TOC=2,3]
在項目中,合理使用緩存對性能有很大的幫助。ThinkJS 提供了多種的緩存方式,包括:內存緩存、文件緩存、Memcache 緩存、Redis 緩存等。
## 緩存類型
系統默認支持的緩存類型如下:
* `base`?內存緩存
* `file`?文件緩存
* `memcache`?Memcache 緩存
* `redis`?Redis 緩存
如果使用?`memcache`?緩存,需要設置 Memcache 配置信息,見?[配置](https://thinkjs.org/zh-CN/doc/2.0/config.html#memcache)。
如果使用?`redis`?緩存,需要設置 Redis 配置信息,見?[配置](https://thinkjs.org/zh-CN/doc/2.0/config.html#redis)。
## 緩存配置
默認緩存配置如下,可以在配置文件?`src/common/config/cache.js`?中進行修改:
~~~
export default {
type: "file", //緩存類型
timeout: 6 * 3600, //失效時間,默認為 6 個小時
prefix: "thinkjs_",
path: runtimePrefix + "/cache",
path_depth: 2,
file_ext: ".json"
};
~~~
其中?`prefix`?在?`memcache`?和?`redis`?類型中使用,存儲時會將緩存 key + prefix 作為新的 key 來存儲,用于防止跟其他地方使用的緩存 key 沖突。如果不想設置 prefix,可以將 prefix 設置為空字符串,如:
~~~
export default {
prefix: "" //將緩存 key 前綴設置為空
}
~~~
其中?`path`,`path_depth`?和?`file_ext`?配置在?`file`?類型中使用:
* `path`?緩存文件的根目錄
* `path_depth`?緩存文件生成子目錄的深度
* `file_ext`?緩存文件的擴展名
## 使用緩存
可以通過?`think.cache`?方法對緩存進行增刪改查操作,具體請見?[API -> think](https://thinkjs.org/zh-CN/doc/2.0/api_think.html#thinkcachename-value-options)。
如果當前使用場景在繼承自 think.http.base 的類下,可以通過?`this.cache`?方法來操作緩存,具體請見?[API -> think.http.base](https://thinkjs.org/zh-CN/doc/2.0//api_think_http_base.html#cachename-value-options)。
## 擴展緩存
可以通過下面的命令創建一個名為?`foo`?緩存類:
~~~
thinkjs adapter cache/foo
~~~
執行完成后,會創建文件?`src/common/adapter/cache/foo.js`。擴展緩存類需要實現如下的方法:
~~~
export default class extends think.cache.base {
/**
* 初始化方法
* @param {Object} options []
* @return {} []
*/
init(options){
//set gc type & start gc
this.gcType = "cache_foo";
think.gc(this);
}
/**
* 獲取緩存
* @param {String} name []
* @return {Promise} []
*/
get(name){
}
/**
* 設置緩存
* @param {String} name []
* @param {Mixed} value []
* @param {Number} timeout []
* @return {Promise}
*/
set(name, value, timeout){
}
/**
* 刪除緩存
* @param {String} name []
* @return {Promise} []
*/
delete(name){
}
/**
* 緩存垃圾回收
* @return {Promise} []
*/
gc(){
}
}
~~~
框架里的 Cache 實現請見?[https://github.com/75team/thinkjs/tree/master/src/adapter/cache](https://github.com/75team/thinkjs/tree/master/src/adapter/cache)。
## 使用第三方緩存 Adapter
如何使用第三方的緩存 Adapter 請參見?[Adapter -> 介紹](https://thinkjs.org/zh-CN/doc/2.0/adapter_intro.html#使用第三方-adapter)。
- 快速入門
- 介紹
- 創建項目
- 項目結構
- 代碼規范
- 升級指南
- 進階應用
- 模塊
- 控制器
- 視圖
- 配置
- 路由
- 模型
- 介紹
- 事務
- 關聯模型
- Mysql
- MongoDB
- SQLite
- Adapter
- 介紹
- Cache
- Session
- WebSocket
- Template
- 擴展功能
- thinkjs 命令
- 靜態資源訪問
- Middleware
- Service
- Cookie
- 錯誤處理
- 錯誤信息
- 數據校驗
- 國際化
- 路徑常量
- REST API
- 定時任務
- 線上部署
- 推薦模塊
- API
- think
- think.base
- think.http.base
- http
- controller
- rest controller
- model
- model.mongo
- middleware