Как работает функция dispose () в lru-cache? - PullRequest
0 голосов
/ 12 ноября 2018

ВОПРОС:

Насколько я понимаю, dispose вызывается каждый раз, когда в кеше не хватает места, и удаляет определенный элемент кеша (см. Ссылку).

Что я нахожу чрезвычайно странным, так это то, что хотя в кеше достаточно места (только для тестирования с несколькими небольшими объектами), многие элементы, похоже, вызываются dispose. Что еще более странно, это то, что когда я перезагружаю свою страницу, элементы не удаляются: они все еще находятся в кэше и, по-видимому, правильно извлечены.

Я должен неправильно понять, что делает dispose. Что на самом деле делает dispose


ССЫЛКА:

https://www.npmjs.com/package/lru-cache#options

dispose Функция, которая вызывается для элементов, когда они удаляются из кэша. Это может быть удобно, если вы хотите закрыть файловые дескрипторы или выполнить другие задачи очистки, когда элементы больше не доступны. Вызывается с ключом, значением. Он вызывается перед фактическим удалением элемента из внутреннего кэша, поэтому, если вы хотите немедленно вернуть его обратно, вам придется сделать это в обратном вызове nextTick или setTimeout, иначе он ничего не сделает.


КОД:

   options = { max: 1000000000
                  , length: function (n, key) { return (sizeof(n)+sizeof(key)) }
                  , dispose: function (key, n) { console.log("DELETED: "+key) }
                  , maxAge: 1000 * 60 * 60 };
    global.myCache = LRU(options);
...