Чтобы получить ответ от API, требуется около 1,5 с, поэтому я подумал, что могу просто сохранять ответ каждые n минут, а затем вместо вызова API внутри команды я просто верну сохраненный ответ. Итак, мой вопрос: как лучше всего это сделать? Поскольку ответ API очень длинный, я не думаю, что хорошо сохранять его в БД. Или, может быть, каждый раз, когда вызывается команда, просто делайте вызов API, а затем сохраняйте его где-то на n минут, и если команда снова вызывается в течение этого n периода времени, просто получайте сохраненный ответ вместо вызова API каждый раз.
Я просто не уверен, как и где сохранить ответ.
const fetch = require('node-fetch');
let data = await fetch('apiurl').then(body => body.json());
добро пожаловать в СО. Попробуйте внедрить кэширование на стороне сервера, это должно помочь: npmjs.com/package/node-кеш В будущем не забудьте опубликовать то, что вы пробовали, с примерами кода, так как этот вопрос довольно широк.
У меня нет конкретного кода, так как я понятия не имею, с чего начать, у меня есть простой вызов API, и все.
Беке, я бы склонялся к кешу памяти, если вы говорите минуты.
@Bibberty Я начал использовать node-cache (спасибо Стивену Старку), еще один вопрос, хорошо ли делать вызов API каждые 1-5 минут?
Это от случая к случаю. Если ваши данные нестабильны, вы звоните так часто, как они могут измениться. Для довольно статических данных рассмотрите возможность более длительного кэширования с помощью хеш-токена для проверки на сервере. Вы также можете использовать протоколы http для возврата ответа I change.
@StevenStark Есть ли плюсы в использовании node-cache по сравнению с ответом Бибберти?
@Beke Да, ответ от Бибберти правильно отвечает на ваш вопрос, однако использование правильной библиотеки обрабатывает гораздо больше, чем простое решение, но ограничивает вас в том, чтобы делать то, что библиотека хочет, чтобы вы делали. плюсы и минусы. Это хорошо зарекомендовавшая себя библиотека в третьем основном выпуске с множеством функций.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В этом примере (очень простом, который я знаю) у нас есть кеш памяти и обновление, если оно старше 5 секунд.
const dummyGetLiveData = () => {
return { "data": "value" }
};
let cache;
let maxCacheAgeInMilliseconds = 5000; // 5secs
const provideData = () => {
if (!cache || (Date.now() - cache.timeStamp > maxCacheAgeInMilliseconds) ) {
console.info('Cache Build');
cache = {
timeStamp: Date.now(),
data: dummyGetLiveData()
}
}
return cache.data;
};
document.querySelector('button').addEventListener('click', () => {
console.info(provideData());
});<button>Get Data</button>
Не могли бы вы добавить свой код?