Как кэшировать код узла, который выполняется, а затем завершается - PullRequest
0 голосов
/ 29 ноября 2018

В Node обычно я кеширую на своем сервере, используя кеш в памяти или базу данных или используя Lodash memoize.Это легко, так как процесс никогда не завершается.

Однако, когда выполняется код узла, который выполняется, а затем завершается, как я могу кэшировать значения, чтобы, когда тот же код выполнялся намного позже, он запоминал значения, которые он извлек ранеебез необходимости извлекать их из файла снова (это занимает около 2 секунд и слишком медленно)?

Краткое содержание программы:

(1) Считайте некоторые файлы и извлеките 6 миллионов чисел// НУЖНО КЕШИТЬ ЗДЕСЬ

(2) Вернуть эти числа в массиве

(3) Процесс завершается

Я знаю, что могу использовать базу данных, но не уверен, что хочуСложности при настройке базы данных для такого простого кода.

Я мог бы использовать кеширование файлов, но я не уверен, что запись 6 миллионов значений в файл и последующее чтение их каждый раз после этогособирается повысить производительность.

Не думаю, что смогу использовать кэш в памяти, так как память стирается при выходе из процесса?верно?

Есть мысли?Спасибо

1 Ответ

0 голосов
/ 29 ноября 2018

Вы можете оставить процесс узла запущенным, а затем сохранить все кэшированное в памяти.Затем, используя что-то вроде express (RESTful) или socket.io (через сокет), вы можете передать записи потребителю.


Для пакета npm

DanPlugin.js

let data;
module.exports = function expensiveGetData() {
   if(data) return data;
   // do expensive read
   data = ...the result;
}

DanPluginConsumer.js

const DanPlugin = require('DanPlugin');
data = DanPlugin();


.... some time later
data2 = DanPlugin(); // fast
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...