Вопросы по форуму / Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Концепция Отслеживание новых сообщений начинается после первого входа на форум а не с начала времён. Запоминается дата первого входа на форум. Посетитель ниразу не был в теме: Если в теме форума появляются сообщения после даты первого входа на форум, тема помечается меткой "новые". При входе в тему запоминается дата последнего прочтенного сообщения. Поскольку движение глаз браузер отслеживать не может, последним прочтенным сообщением считается последнее сообщение, отгруженное клиенту в браузер. Посетитель уже был в теме: Если в теме форума появляются сообщения после даты последнего прочтенного сообщения, тема помечается меткой "новые". При входе в тему дата последнего прочтенного сообщения обновляется на новое значение. Новыми не считаются:
Реализация Для унификации гостей и пользователей, а также для поддержки информации о прочитанных после вылогинивания, используются так называемые ридмаркеры. Ридмаркер выдается посетителю при первом заходе, если он еще не выдан. Выданный ридмаркер сохраняется в куках для гостей, и в куках и в профиле для пользователей. При входе в систему ридмаркер гостя достается из куки, а ридмаркер пользователя достается из профиля и помещается в куку (как и другие настройки). Таким образом после вылогинивания, информация о прочитанных сообщениях не пропадает. Решение проблемы распухания таблиц ридмаркеров Форум посещает много ботов, у которых куки и сессий нет, а также много гостей, у которых протухает кука и ридмаркер теряется. Также постоянные посетители прочитали много тем, а новые темы появляются каждый день. Из за этого таблицы с информацией о прочитанных распухают, и возникает небоходимость в механизме их очистки (своего рода лангольеры). Многие боты, распознанные по юзер-агенту, не участвуют в отслеживании новых. Введен параметр, ограничивающий период отслеживания новых. Введено понятие последней активности ридмаркера. Ридмаркеры, неактивные дольше чем период отслеживания новых, удаляются. Поэтому для долго отсутсвующих посетителей, при возврате на форум, отсчёт новых начинается с момента возврата на форум, а не с начала времен, т.е. как будто он вошел на форум первый раз. Много ботов заходят на форумы, но не входят в темы. Ридмаркеры, неактивные дольше 1-го дня, у которых нет посещений тем, удаляются. Хранить записи о прочитанных темах, которые старее периода отслеживания новых, нет смысла. Такие записи удаляются, а дата первого входа на форум подтягивается до даты начала отслеживания новых (now - new_check_period). У активных читателей часто бывает ситуация, что он прочитал многие или все темы с новыми сообщениями. Для этих тем были созданы записи в таблице прочитнных тем, но очищены они будут лишь когда истечет период отслеживания новых, а до этого момента они будут просто мертвым грузом лежать в таблице и утяжелять ее. Чтобы этого не происходило, при проверке новых также вычисляется время первого непрочитанного поста. Все записи до этого времени больше не нужны и поэтому удаляются, а дата первого входа на форум подтягивается до этой даты. Для анализа и мониторинга я сделал техническую статистику: http://nosql.ru/forum/load_statistics.php Кэширование При загрузке основного контента проверка новых не осуществляется, таким образом контент поставлятся быстро и не тратися время на ожидание проверки новых. Если инфа о новых есть в кэше, то она берется из кэша. Реализована периодическая проверка новых в фоновом режиме. Этот скрипт подкачивает тэги [новые] в страницу. Первый раз проверка запускается сразу после загрузки и далее каждые N секунд. Благодаря тому что первый запуск фоновой проверки новых осуществляется сразу после загрузки основной страницы, устаревшая инфа, взятая основным скриптом из кэша, обновляется актуальной инфой буквально через 1-2 секунды. Удалось сэкономить даже на фоновой проверке. Незачем ей зря гонять проверку и грузить базу каждые N секунд, если ничего не поменялось. Система проверяет - если после последней проверки не было новых сообщений, то даже фоновая проверка новые не вычисляет, а берет из кэша. Реализована процедура гранулярной инвалидации кэша информации о прочитанных, по мере прочтения топиков. Отображение Топики с новыми сообщениями бывают 2х видов: Просто топики с новыми сообщениями Топики, которые ты уже посещал, и в них появились новые сообщения. Совсем новые топики с новыми сообщениями Новосозданные топики, в которых ты не разу не был. Метка новые у этих топиков несколько отличается по цвету. ... |
|||
:
Изменено: 01.01.2022, 01:29 - Программизд 02
Нравится:
Не нравится:
|
|||
23.11.2016, 20:22 |
|
Вопросы по форуму / Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Гарыныч, уже починил. Спасибо за репорт. Возникало только если у чела в профиле есть предпочитаемы форумы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 20:34 |
|
Вопросы по форуму / Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Так фича осталась, бага исправлена:) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 20:57 |
|
Вопросы по форуму / Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Пашэ, Я просил не поискать, а сообщать если случится. Так что всё ок. Раньше у меня иногда переход по [новые] сбоил, сейчас пока больше не сбоит. Видимо работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 20:14 |
|
Вопросы по форуму / Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Пашэ Программизд 02 Пашэ, Я просил не поискать, а сообщать если случится. Так что всё ок. Раньше у меня иногда переход по [новые] сбоил, сейчас пока больше не сбоит. Видимо работает. Потом оно насрало в топик X, он подсветился "новые". Захожу - пусто. Но деталей не помню, потому не сообщаю. Сейчас сделано так. В таблице ридмаркеров есть дата последнего прочитанного юзером поста в теме. У темы есть дата последнего поста. Если она больше то ставим нью. ... |
|||
:
Изменено: 24.11.2016, 21:00 - Программизд 02
Нравится:
Не нравится:
|
|||
24.11.2016, 20:59 |
|
Вопросы по форуму / Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Гарыныч Программизд 02, дед, нужна ещё шлифовка... например, тема из 3-х (до 12-ти) строниц, я открываю - все строницы топика, цицирую како-нить пост, меня в резалте кидает на одну(конкретную) страницу ( ту, в которой цицируемый пост...) ты не запоминаешь , в каком режиме открыт топик? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 21:03 |
|
Вопросы по форуму / Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Чучело Дрючело 01.02.2019, 08:12 Деда, а почему я не вижу в приличном трепе как обновляются темы и сам приличный трёп у меня серый, как и несколько других форумов ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2019, 08:14 |
|
Вопросы по форуму / Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
qwerty1111 05.02.2019, 22:19 сам это все придумал? qwerty1111 05.02.2019, 22:19 За бесплатно все это кодишь? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 22:33 |
|
Start [/forum-old/search.php?author=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D0%B7%D0%B4+02&author_mode=wrote_post&do_search=1&start_from=16409&tid=854]: |
0ms |
get settings: |
1ms |
get forum list: |
3ms |
searching: |
15ms |
get settings: |
1ms |
get forum list: |
3ms |
get topic data: |
3ms |
check forum access: |
0ms |
check topic access: |
0ms |
get forum data: |
0ms |
get found posts: |
37ms |
track hit: |
25ms |
get online users: |
5ms |
others: | 270ms |
total: | 363ms |
0 / 0 |