Рекурсивная производительность статуса элемента - PullRequest
0 голосов
/ 27 августа 2018

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

Данные

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

  • Мета
  • Предметы
  • Истечения срока действия

Мета - это то, что определяет коллекцию элементов и содержит общую информацию для этой коллекции, и для мета установлены определенные критерии, которыеиспользуется во всем макете элементов.

Элемент является производным мета и содержит уникальные данные, специфичные для этого ЕДИНСТВЕННОГО элемента, и обычно требует метаинформации. (Примечание: элемент ТАКЖЕ может быть набором ДРУГИХ элементов)

Срок действия не требует пояснений и является датой окончания срока действия одного отдельного элемента.

Текущая реализация

Если вы введете страницу мета для любой данной мета, она загрузит элементы в виде вызова ajax с разбивкой на страницы и для каждого загруженного элемента загрузит значок состояния.Этот значок состояния генерируется КАЖДЫЙ раз, когда он отображается, и он рекурсивный (Это означает, что если бы я поместил значок состояния в мету, он загрузил бы все элементы для этой мета и проверил бы все его даты истечения срока действия ипоэтому четвертый.)

В расширенной реализации в настоящее время он делает 600 вызовов (5,56 секунд) в базу данных (что довольно сложно, но необходимо в зависимости от структуры базы данных)..)

Моя теория

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

Вопрос

Какой наилучшей практикой для значка статуса будет рекурсивный и имеющий человека?у факторов и отношений, чтобы отслеживать?

1 Ответ

0 голосов
/ 27 августа 2018

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

Таким образом, вы будете разделять тяжелые вещи, которые будут обрабатываться работниками на стороне сервера и на стороне клиента - всебудет быстро и плавно.Как только обновление статуса будет выполнено, ваш конечный пользователь увидит изменение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...