R
R
Rastishka2019-01-11 17:47:31
Algorithms
Rastishka, 2019-01-11 17:47:31

The name of the caching algorithm?

Usually caching works like this:

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

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

If the data is generated for a long time, the user waits until they are recalculated.
I have coded my bike, which works well:
function получитьДанные() {
 if (данныеЕстьВкеше() && данныеНеПротухли() ) {
    return данныеИзКеша();

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

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

Question: does this method of caching and updating the cache have any correct name? I kind of met the name somewhere on stackoverflow, but now I can’t find it.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
L
Lynn "Coffee Man", 2019-01-11
@Rastishka

I don't know the name, but it's not new at all
https://tools.ietf.org/html/rfc5861#section-3
nginx.org/en/docs/http/ngx_http_proxy_module.html#...

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question