Задать вопрос
Kozack
@Kozack
Thinking about a11y

Наилучшее решение повторяющихся запросов?

В силу архитектурных особенностей один и тот же сетевой запрос к API может выполняться несколько раз в пределах нескольких минут.
Подробнее

Браузерное расширение. Являет собой что-то на подобии плей-листа. Пользователю показывается кнопка для просмотра и в этот момент загружается список доступных видео, чтобы показать пользователю информацию о том, есть ли среди них новые. Когда он нажимает "Начать" открывается другая страница, где опять выполняется тот-же сетевой запрос (по тому же пути, с теми же параметрами).

API стороннего сервиса и к нему я доступа не имею. Вероятность что за несколько менут ответ от сервера поменяется крайне мала. Обычно данные обновляються не чаще чем раз в час.

Что придумать в этой ситуации? Я думаю в сторону кэширования. Я знаю что есть Cache API но никогда с ним не работала. Там есть механизм, чтобы кэшировать ответ на время, скажем чтобы данные автоматически удалялись из кэша если они были сохранены более 10 минут назад?

Или может есть какой другой подход для решения этой проблемы?
  • Вопрос задан
  • 105 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
https://developer.mozilla.org/ru/docs/Web/API/Cach...

Другой вариант: записать json с данными в localStorage, и дату рядышком.
Если не сильно устарели - используем. Если сильно - запрашиваем заново, и обновляем.
Ответ написан
@ettychel
Можно использовать Cookie

document.cookie = "not_refresh=true; max-age=600";

потом можно просто проверить
понадобится функция для чтения Cookie:
function getCookie(name) {
  let matches = document.cookie.match(new RegExp(
    "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
  ));
  return matches ? decodeURIComponent(matches[1]) : false;
}

И проверочка:
if (!getCookie(not_refresh)) {
  // пора обновить
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы