Развитие сайта » Новая система учета просмотров
12»
Артём Григорьев
июн 2009
Вы наверное замечали, что главная страница форума грузится сильно дольше остальных страниц.
Связано это прежде всего с системой выделения непросмотренных сообщений в темах.

В базу данных сайта записываются все соверщенные посетителями просмотры.
Чтобы узнать, читали ли вы данное сообщение, сравнивается время вашего последнего посещения этой темы и время добавления данного сообщения. При этом к таблице, которая содержит на данный момент почти 88 тысяч записей делается достаточно трудоемкий LIKE-запрос, выполнение которого может занять до 0.4 секунды! А это при том, что такой запрос выполняется для каждой темы (из 77 штук).

Предлагаю внедрить новую систему. И вы бы ничего не заметили, если бы не одно Но.
Будет полное мясо с уведомлениями о новых сообщениях. То есть либо их будет море, либо вы пропустите какие-нибудь.

Вот. Оно того стоит?
Дмитрий Бородин
июн 2009
Меня не напрягает подождать.
Артём Григорьев
июн 2009
Меня напрягает.
Представь, что будет через годик? Когда просмотров раза в три больше станет? - В три раза дольше ждать придется. Уж лучше сейчас сделать, пока это не так много заденет пользователей.
Роман Домбровский
июн 2009
Объясни разницу в механизмах уведомления.
Артём Григорьев
июн 2009
Внешней разницы никакой. Чисто алгоритмическая. Или тебя она интересует?
Роман Домбровский
июн 2009
Она. Может можно будет убрать неудобство.
Может записывать, сколько было сообщений в каждой теме при последнем заходе, а не по времени делать.
Или сделать класс, который меняется на Вкл, когда кто-то другой зашёл в тему, а при заходе человек делать Выкл.
Артём Григорьев
июн 2009
Ну то, что сейчас я тебе описал.
А будет так: таблица, в которой записывается UserID, TopicID и MessageID последнего просмотренного сообщение данным пользователем в данной теме. Запрос к такой базе выполняется гораздо быстрее ,да и записей там будет меньше.
Роман Домбровский
июн 2009
А почему будет мясо?
Артём Григорьев
июн 2009
Ну просто надо либо всем оставить эту таблицу пустой, и тогда всем придется прошелкать "непросмотренные" темы, либо заполнить, что все всё просмотрели.
Роман Домбровский
июн 2009
Лучше первое. Таким образом в первый раз систему проверишь.
12»