Форум непрочитанных постов реализации - PullRequest
4 голосов
/ 01 мая 2011

Реализация форума Asp.net mvc3. Часть реализации - это функция, которая показывает, какие сообщения были прочитаны, а какие нет.

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

В настоящее время у меня 450 пользователей, поэтому создание их всех занимает много времени.

Я подумал, что должен быть лучший способ, как крупные форумы vbullitin или phpbb с более чем 1000 пользователей могут сделать это, не тратя 2+ сек на создание постов, для создания всех этих записей, но я не нашел его. На этом сайте я вижу некоторые другие вопросы по этому поводу, но я не нашел ответа, который смог бы использовать.

Ответы [ 3 ]

2 голосов
/ 01 мая 2011

Вам нужно записать последнее действие пользователя, но сохранение всего в базе данных будет неэффективным.В связи с этим вам также необходимо установить файлы cookie, чтобы узнать, какие темы они просматривали.Немного гибридный подход, но здесь есть некоторые подробные обсуждения:

0 голосов
/ 01 мая 2011

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

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

0 голосов
/ 01 мая 2011

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

...