Документация на самом деле не очень подробная. Что вам нужно сделать, так это реализовать объект кеша, как указано в примере кода из документа (закомментированная область).
Ниже приведен пример кэширования в массив (в памяти). Вы также можете сохранить этот массив в файл или в базу данных 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
- это объект, который передается вашей функции set
в параметре cacheStrategy
. Они предполагают, что это может быть число, представляющее срок службы записи в кеше, поэтому я реализовал таймер для удаления записи в кеше через количество секунд, равное 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);