gpt4 book ai didi

javascript - 如何在 riot-lol-api npm 包中使用缓存?

转载 作者:行者123 更新时间:2023-11-30 20:02:32 26 4
gpt4 key购买 nike

问题:

读完后:

https://www.npmjs.com/package/riot-lol-api#caching

我还是一头雾水。这是我第一次尝试缓存 api 响应。

例如,我不知道 YOUR_CACHE_STRATEGY 有哪些可用值,文档中也没有解释。

本质上,我会寻找一个示例,例如如何缓存来自 /lol/summoner/v3/summoners/by-name/ 的响应并提供 5 分钟?


代码:

riotRequest.request(region.toLowerCase(), 'summoner', '/lol/summoner/v3/summoners/by-name/'+encodeURI(player), function(err, data) {
if (!err) {
var summonerID = data.id;
} else {
console.error("ERROR1: "+err);
res.render("page", {errorMessage: "Player not found !"});
}
});

最佳答案

文档确实不是很详细。您需要做的基本上是按照文档(注释区域)的代码示例中指定的方式实现缓存对象。

下面是缓存到数组(在内存中)的示例。您还可以按照文档中的建议将此数组保存到文件或 Redis 数据库中。

//cacheData holds objects of type {key: 123, value: "request data"}
var cacheData = []
var cacheIndex = 0

function deleteFromCache(key) {
for (var i = 0; i < cacheData.length; i++) {
if (cacheData[i].key == key) {
cacheData.splice(i, 1);
return;
}
}
}

var cache = {
get: function(region, endpoint, cb) {
for (var entry of cacheData) {
if (entry.value == data) {
//we have a cache hit
return cb(null, entry.value);
}
}
return cb(null, null);
},
set: function(region, endpoint, cacheStrategy, data) {
var key = cacheIndex++;
var value = data;

cacheData.push({key, value});

//cacheStrategy is a number representing the number of seconds to keep the data in cache
setTimeout(() => {
deleteFromCache(key);
}, cacheStrategy * 1000);
}
};

YOUR_CACHE_STRATEGY 是在 cacheStrategy 参数中传递给您的 set 函数的对象。他们建议它可以是一个代表缓存条目生命周期的数字,所以我实现了一个计时器,在等于 cacheStrategy 的秒数后删除缓存条目。

您将使用此号码调用请求:

riotRequest.request(region.toLowerCase(), 'summoner', '/lol/summoner/v3/summoners/by-name/'+encodeURI(player), 30, function(err, data) {//.....

要启用缓存,您需要将 cache 对象传递给 RiotRequest 的构造函数:

var riotRequest = new RiotRequest('my_api_key', cache);

关于javascript - 如何在 riot-lol-api npm 包中使用缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53226995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com