Rastishka
@Rastishka

Название алгоритма кеширования?

Обычно кеширование работает так:
function получитьДанные() {
 if (данныеЕстьВкеше() && данныеНеПротухли() ) {
    return данныеИзКеша();

  } else {
    var данные = сгенеритьДанныеДолгоИнудно()
    сохранитьВкеш(данные);
    return данные;
  }
}


Если данные долго генерятся - юзер ждет пока не пересчитаются.

Я наговнокодил свой велосипед, который хорошо работает:
function получитьДанные() {
 if (данныеЕстьВкеше() && данныеНеПротухли() ) {
    return данныеИзКеша();

  } elseif(данныеЕстьВкешеНоУжеПротухли() ) {
   App::on('finish', function() { // после отдачи результата обновляем данные в кеше
       var данные = сгенеритьДанныеДолгоИнудно();
       сохранитьВкеш(данные);
   });
   return данныеИзКеша(); // возвращаем пусть и протухшие, зато не ждем

  } else {
   // данных в кеше никаких нет, придется перегенерить в любом случае
   var данные = сгенеритьДанныеДолгоИнудно();
   сохранитьВкеш(данные);
   return данные;
  }    
}
// в коде еще есть проверки не перегенеряем ли мы уже данные 
// (чтобы одновременно в другом потоке не перегенерять их несколько раз)
// но для упрощения понимания алгоритма убрал их из псевдокода.


Вопрос: такой способ кеширования и обновления кеша имеет какое то правильное название? Я вроде где то встречал на стековерфлоу название, но сейчас не могу найти.
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Aurora Infinity Москва
от 60 000 до 120 000 руб.
HTML Academy Санкт-Петербург
от 150 000 до 180 000 руб.
от 100 000 руб.
24 июн. 2019, в 15:25
500 руб./за проект
24 июн. 2019, в 12:59
15000 руб./за проект