Эффективно храните данные, к которым будут обращаться часто и не часто менять - PullRequest
2 голосов
/ 16 марта 2019

У меня есть Node-сервер, который я использую с MongoDB.В настоящее время у меня есть шаблоны EJS, которые отображают различные страницы, одна из которых - страница пользователя, показывающая, какие продукты они имеют в своей подписке.

При редактировании подписки пользователя я в настоящее время жестко программирую эти продукты в шаблоне EJS, но хочу передать все продукты в шаблон, чтобы я мог добавлять, удалять и редактировать продукты на панели инструментов.,Таким образом, при редактировании плана пользователя у него будет самая последняя версия списка продуктов (обновленные цены и т. Д.)

Эти данные меняются не часто, но я беспокоюсь, что их сохранят вбаза данных создаст ненужную нагрузку на базу данных, если ее нужно будет запрашивать каждый раз, когда открывается страница пользователя (что является ОЧЕНЬ частой задачей).Я думал о решении, которое потенциально предполагает хранение информации о продукте в файле JSON при запуске сервера и при редактировании продукта в БД, редактируя этот файл JSON так, чтобы загрузка следующей страницы имела обновленные значения.

Есть ли стандартный способ сделать то, что я хочу сделать?

1 Ответ

0 голосов
/ 16 марта 2019

Вы можете оформить memoizee пакет, он позволяет вам в основном прикреплять кеш перед любыми функциями JS. Так что для вашего случая вы можете сделать что-то вроде var getCachedProducts = memoizee(myGetProductsFunction, {async: true, maxAge: 15000}). После этого вы можете просто использовать новую функцию getCachedProducts так же, как вы делали это раньше, но в итоге запрос будет выполняться только раз в 15 секунд.

Конечно, предполагается, что вы можете принять определенный уровень задержки. Если вам не нужна задержка, вы должны рассмотреть возможность создания плоской таблицы , когда какие-либо изменения вносятся через панель инструментов, и каждый раз запрашивать эту таблицу, но таким образом вы должны сами убедиться в согласованности (то есть оба они будут обновлены). вместе).

Чтобы добавить к вашей идее, JSON file не очень хороший выбор, потому что вам определенно не нужно многократно читать диск для списка. Вы можете сохранить список в памяти, что и делает memoizee.

...