Rastishka
@Rastishka

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

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

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


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

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

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

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


Вопрос: такой способ кеширования и обновления кеша имеет какое то правильное название? Я вроде где то встречал на стековерфлоу название, но сейчас не могу найти.
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Названия не знаю, но вообще это не новинка
https://tools.ietf.org/html/rfc5861#section-3
nginx.org/en/docs/http/ngx_http_proxy_module.html#...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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