写一个node的服务,压测的时候有一个请求没有缓存导致IO太高,直接加缓存的话又担心内存占用太大挤爆了。写一个检测系统内存情况的缓存管理模块又有点太麻烦了。能不能有一个内存充足的时候就缓存,在内存不够需要垃圾回收的时候就自动回收掉呢?在阮一峰那里看到ES2021支持弱引用了,因此现在在版本比较高的node上也可以用弱引用很方便的实现一个弱缓存了:
const weakCache = new Map();//弱缓存,当占用内存太多的时候系统会自动回收
function setWeakCache(key,value){
if("function"==typeof WeakRef){
if(typeof value == "object" && !!value)
weakCache.set(key, new WeakRef(value));
}else{
console.log("js版本太旧不支持弱引用")
}
}
function getWeakCache(key){
if(weakCache.has(key)){
let value = weakCache.get(key).deref();
if(!value) weakCache.delete(key);
return value
}
return
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。