Сохранить ответ json на n минут

Чтобы получить ответ от API, требуется около 1,5 с, поэтому я подумал, что могу просто сохранять ответ каждые n минут, а затем вместо вызова API внутри команды я просто верну сохраненный ответ. Итак, мой вопрос: как лучше всего это сделать? Поскольку ответ API очень длинный, я не думаю, что хорошо сохранять его в БД. Или, может быть, каждый раз, когда вызывается команда, просто делайте вызов API, а затем сохраняйте его где-то на n минут, и если команда снова вызывается в течение этого n периода времени, просто получайте сохраненный ответ вместо вызова API каждый раз.

Я просто не уверен, как и где сохранить ответ.

const fetch = require('node-fetch');
let data = await fetch('apiurl').then(body => body.json());

Не могли бы вы добавить свой код?

Jack Bashford 08.03.2019 02:01

добро пожаловать в СО. Попробуйте внедрить кэширование на стороне сервера, это должно помочь: npmjs.com/package/node-кеш В будущем не забудьте опубликовать то, что вы пробовали, с примерами кода, так как этот вопрос довольно широк.

Steven Stark 08.03.2019 02:02

У меня нет конкретного кода, так как я понятия не имею, с чего начать, у меня есть простой вызов API, и все.

user11038307 08.03.2019 02:05

Беке, я бы склонялся к кешу памяти, если вы говорите минуты.

Bibberty 08.03.2019 02:22

@Bibberty Я начал использовать node-cache (спасибо Стивену Старку), еще один вопрос, хорошо ли делать вызов API каждые 1-5 минут?

user11038307 08.03.2019 02:33

Это от случая к случаю. Если ваши данные нестабильны, вы звоните так часто, как они могут измениться. Для довольно статических данных рассмотрите возможность более длительного кэширования с помощью хеш-токена для проверки на сервере. Вы также можете использовать протоколы http для возврата ответа I change.

Bibberty 08.03.2019 02:36

@StevenStark Есть ли плюсы в использовании node-cache по сравнению с ответом Бибберти?

user11038307 08.03.2019 03:38

@Beke Да, ответ от Бибберти правильно отвечает на ваш вопрос, однако использование правильной библиотеки обрабатывает гораздо больше, чем простое решение, но ограничивает вас в том, чтобы делать то, что библиотека хочет, чтобы вы делали. плюсы и минусы. Это хорошо зарекомендовавшая себя библиотека в третьем основном выпуске с множеством функций.

Steven Stark 08.03.2019 04:20
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
8
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В этом примере (очень простом, который я знаю) у нас есть кеш памяти и обновление, если оно старше 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>

Другие вопросы по теме