В моем веб-приложении мы встроили функцию центра сообщений / входящих сообщений, при переходе по каждой странице мы ссылаемся на «Центр сообщений» и добавляем рядом с ним количество непрочитанных сообщений, например «Центр сообщений» (2 )». Чтобы заполнить (2), при каждом запросе мы запускаем * SELECT COUNT (**) FROM MessageTable WHERE unread = true, бла-бла *, чтобы получить количество, включаемое в навигацию.
Это означает, что для каждой загрузки страницы мы попадаем в эту таблицу и запрашиваем счетчик.
Я предложил две альтернативы:
- Сохранение совокупного количества в другом месте базы данных, а не вычисление количества каждый раз (также снимая нагрузку с таблицы сообщений). Это по-прежнему означает попадание в базу данных с каждым запросом.
- Настройка назначения временной очереди для каждого вошедшего в систему пользователя и отправка обновлений в эту очередь, если пользователь вошел в систему, которые могут увеличивать / уменьшать счет, хранящийся в сеансе. (не уверен, возможно ли это вообще)
Это хорошие альтернативы, есть ли другие варианты?