Rastishka
@Rastishka

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

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

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


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

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

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

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


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

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

Войти через TM ID
Похожие вопросы
18 янв. 2019, в 21:37
1500 руб./за проект
18 янв. 2019, в 19:30
150000 руб./за проект
18 янв. 2019, в 18:43
1000 руб./в час