- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题:
读完后:
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/
谁能解决这个练习,这样我就能明白我错在哪里,因为有太多的 LOL 变量。 生成一个 C 代码,将其放在以下表达式之前 printf ("% ld% ld% ld \ n", lol, & lol, *
情况: 我有一个现有的代码库,它使用另一个库向 Riot API 发出请求。遗憾的是,该库有一些问题,所以我决定切换到这个: https://www.npmjs.com/package/riot-lo
问题: 读完后: https://www.npmjs.com/package/riot-lol-api#caching 我还是一头雾水。这是我第一次尝试缓存 api 响应。 例如,我不知道 YOUR_
我在这里面临某种许可问题。我可以使用 cat 读取文件,使用 nano 对其进行更改但出于某种原因,jq有权限问题。这是我面临的: msp@coolpad:~/projects/lol$ jq .na
这将按什么顺序进行评估。我的意图是,如果它找到 foo 或 bar,它还会搜索 lol 和 rofl。 这完全是在树林里吗?如果是这样,人们将如何评估这样的表达式。 最佳答案 The AND oper
嘿,我喜欢正则表达式,但我根本不擅长它们。 我有大约 400 个缩写词的列表,例如 lol、omg、lmao 等。每当有人键入这些缩短的单词之一时,它就会被替换为对应的英语单词([笑声],或类似的东西
我是一名优秀的程序员,十分优秀!