在項(xiàng)目中,合理使用緩存對(duì)性能有很大的幫助。ThinkJS 提供了多種的緩存方式,包括:內(nèi)存緩存、文件緩存、Memcache 緩存、Redis 緩存等。
系統(tǒng)默認(rèn)支持的緩存類型如下:
base
內(nèi)存緩存file
文件緩存memcache
Memcache 緩存redis
Redis 緩存如果使用 memcache
緩存,需要設(shè)置 Memcache 配置信息,見 配置。
如果使用 redis
緩存,需要設(shè)置 Redis 配置信息,見 配置。
默認(rèn)緩存配置如下,可以在配置文件 src/common/config/cache.js
中進(jìn)行修改:
export default {
type: "file", //緩存類型
timeout: 6 * 3600, //失效時(shí)間,默認(rèn)為 6 個(gè)小時(shí)
prefix: "thinkjs_",
path: runtimePrefix + "/cache",
path_depth: 2,
file_ext: ".json"
};
其中 prefix
在 memcache
和 redis
類型中使用,存儲(chǔ)時(shí)會(huì)將緩存 key + prefix 作為新的 key 來(lái)存儲(chǔ),用于防止跟其他地方使用的緩存 key 沖突。如果不想設(shè)置 prefix,可以將 prefix 設(shè)置為空字符串,如:
export default {
prefix: "" //將緩存 key 前綴設(shè)置為空
}
其中 path
,path_depth
和 file_ext
配置在 file
類型中使用:
path
緩存文件的根目錄path_depth
緩存文件生成子目錄的深度file_ext
緩存文件的擴(kuò)展名可以通過(guò) think.cache
方法對(duì)緩存進(jìn)行增刪改查操作,具體請(qǐng)見 API -> think。
如果當(dāng)前使用場(chǎng)景在繼承自 think.http.base 的類下,可以通過(guò) this.cache
方法來(lái)操作緩存,具體請(qǐng)見 API -> think.http.base。
可以通過(guò)下面的命令創(chuàng)建一個(gè)名為 foo
緩存類:
thinkjs adapter cache/foo
執(zhí)行完成后,會(huì)創(chuàng)建文件 src/common/adapter/cache/foo.js
。擴(kuò)展緩存類需要實(shí)現(xiàn)如下的方法:
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){
}
/**
* 設(shè)置緩存
* @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 實(shí)現(xiàn)請(qǐng)見 https://github.com/75team/thinkjs/tree/master/src/adapter/cache。
如何使用第三方的緩存 Adapter 請(qǐng)參見 Adapter -> 介紹。
更多建議: