Node.js и Express — простейший подход к кэшированию

Представьте себе приложение с сотнями пользователей с небольшими данными (максимум 10 пар имя/значение), но создайте систему, в которой для получения этих данных необходимо выполнить некоторые сложные вычисления.

Идея состоит в том, что у меня есть система с «историей», и состояние истории необходимо, поэтому для системы важно «проработать» историю, чтобы иметь последние фактические данные.

Хорошо, и этот процесс требует времени, но я подумал, что единственный, кто редактирует данные в моем случае, — это администратор или события администратора, так как насчет того, чтобы вместо вычисления данных для каждого вызова пользователя я просто:

  • создать объект кеша (в памяти?)
  • вычислять «историю» только для событий администратора (и перезагрузки сервера)
  • предоставлять пользователям данные из этого объекта кеша без вычислений

Это хорошая идея? И если да, то каков наилучший подход для достижения этого?

Я просто сделал модуль под названием «ServerData», который может хранить все пользовательские данные в массивах, и пользовательскую функцию под названием «serverDataUpdate()», которую я вызываю при необходимости.

Пользователи получают все необходимое из этого кэш-модуля.

Я спрашиваю, потому что все это казалось слишком простым, и я искал подходы к кэшированию для Node и увидел несколько дополнительных модулей, созданных для этой цели.

Могут ли они предложить что-то лучшее, чем этот «простой» подход?

Это кажется слишком простым, поэтому я не уверен, что ничего не пропустил.

Спасибо

Возможно, вам следует вычислить свои данные и кэшировать их на сервере Redis. Это просто запустить, и это очень быстро. И, возможно, вы можете создать новый процесс nodejs для обработки данных и связи с Seneca.js для обновления данных на сервере Redis.

Milad Bonakdar 25.04.2019 09:58

Милад, спасибо за ответ, буду знать :)

Oliver Goossens 25.04.2019 10:45
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы считаете, что считать одни и те же цифры каждый раз при получении запроса — это излишество, то да, предварительно вычисляйте их и храните в памяти — лишь бы обслуживали.

  1. Вам нужно будет создать маршруты для пересчета и обновления кеша при изменении параметров расчета.

  2. Имейте в виду, что вам, возможно, придется прибегнуть к другому подходу, если вы собираетесь разместить свое приложение в масштабируемой системе оркестрации контейнеров, такой как Kubernetes. В этом случае ваше приложение будет создано, и каждое из них будет иметь свой собственный кеш.

Спасибо, Чарли, за комментарий. Да, я думал, что могу столкнуться с проблемами масштабируемости, но это не наш план. еще раз спасибо, я просто хотел знать, есть ли большой недостаток в моей концепции или нет.

Oliver Goossens 25.04.2019 10:46

Другие вопросы по теме