Р!
А
Б
В
Г
Д
Е
З
И
К
Л
М
Н
О
П
Р
С
Ф
Х
Ц
Ч
Ш
Ю
Я
#
БЛОГИ

Поведенческие особенности рейтинга комментариев на «Чита.Ру»

В последнее время поступило несколько жалоб от посетителей портала на то, что после рейтингования комментариев на Читинском городском портале (когда пользователь кликает на «+» или «-») происходят непонятные вещи. Например, нажали на «+», когда на счетчике было «+3», после чего стало «-1».

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

Формирование каждой страницы сайта сопряжено с множеством запросов к базе данных. Для снижения нагрузки на сервер баз данных используется технология кэширования веб-страниц, которая заключается в том, что страница после формирования запоминается на некоторое время, и в течение этого времени она заново не формируется, просто отдаётся в уже готовом виде. В нашем случае срок кэширования составляет 5 минут. По истечению срока кэширования страница формируется заново в случае обращения к ней.
Кэширование — это важный момент для дальнейшего понимания происходящего.

Теперь к сути жалоб. Давайте рассмотрим на примере.

Буквой Т обозначим момент формирования страницы, соответственно, в этот момент времени она попадает в кэш (запоминается в готовом виде).

Итак, в момент Т у нас сформировалась страница с новостью, на одном из комментариев которой стоит рейтинг «+3».

Пользователь А в момент времени (T+1 минута) нажимает на кнопку «-».

В этот момент происходит следующее:
1. Браузер пользователя отдаёт запрос серверу на уменьшение рейтинга комментария и одновременный запрос на получение его нового значения.
2. Сервер смотрит в базе данных реальный рейтинг комментария (он у нас +3), уменьшает его, возвращает браузеру «+2»
3. Браузер новый результат меняет на экране компьютера.

Очень важно понимать, что после этого закэшированная страница осталась в том самом виде, где напротив комментария стоит рейтинг +3, при этом в базе данных уже +2.

Пользователь B в момент времени (T+2 минуты) просматривает страницу (видит рейтинг +3) нажимает на кнопку «, ожидает получить результат (+2).

В этот момент происходит следующее:
1. Браузер пользователя отдаёт запрос серверу на уменьшение рейтинга комментария и одновременный запрос на получение его нового значения.
2. Сервер смотрит в базе данных реальный рейтинг комментария (он уже +2), уменьшает его, возвращает браузеру «+1».
3. Браузер новый результат меняет на экране компьютера.

Пользователь думает: «Странно, хотел уменьшить рейтинг на единицу, а он уменьшился на 2, ну и бог с ним, уменьшился и ладно”. Никакой паники.

Пользователь С в момент времени (T+3 минуты) просматривает страницу (видит рейтинг +3) нажимает на кнопку «, ожидает получить результат (+4).

В этот момент происходит следующее:
1. Браузер пользователя отдаёт запрос серверу на увеличение рейтинга комментария и одновременный запрос на получение его нового значения.
2. Сервер смотрит в базе данных реальный рейтинг комментария (он уже +1), увеличивает его, возвращает браузеру «+2».
3. Браузер новый результат меняет на экране компьютера.

И вот тут пользователь страшно негодует. Было +3, нажал на +, а стало +2. Вместо увеличения он уменьшился! В «Чита.Ру» работают жулики и подлецы!

А теперь представьте, что новость одновременно читает не три пользователя A, B и С, а сотни человек. Такое на Читинском городском портале происходит постоянно.

После поступления жалоб мы задумались, что с этим можно сделать. Можно было бы отказаться от технологии кэширования, но при этом описанный эффект будет повторяться всё равно. Если пользователи открыли страницу примерно в одно время, они будут наблюдать точно такой же эффект до тех пор, пока полностью не обновить страницу.

Решено было одновременно с рейтингом показывать количество проголосовавших и время формирования результата. Пользователяю C в нашем примере будет видно, что после его нажатия изменилось не только значение рейтинга, но и количество проголосовавших увеличилось не на единицу (его самого), а на три. Значит было ещё два человека, которые повлияли на результат.

Количество проголосовавших также ещё интересно в тех случаях, где вроде рейтинг небольшой, например около 0, а проголосовавших 40 человек. Это означает, что голоса разделились поровну и равнодушных по этому мнению нет.

Такая интересная особенность реализовалась благодаря нашим бдительным читателям.

За что им огромное спасибо.

НазадВперёд
28 отзывов

Основное сообщение

Вспомогательное сообщение

Перетащите файлы сюда

Добавить
  • Отзывы
  • Правила
Модерация
Комментарий заминусован посетителями. (показать)

Ещё бы отменить скрытие комментариев при наборе "-", в последнее время комментарии, основанные на фактах и затрагивающие интересы определенных лиц и групп очень уж быстро набирают минуса, чтобы быть скрытыми.

Модерация
Комментарий заминусован посетителями. (показать)

Поддержу в части всплывающего окошка: Вы уверены что это вам надо?

Раз я нажал "показать" - значит надо.

Зачем переспрашивать?

Уверены?

Точно уверены?

Точно при точно? или может быть еще чуток подумаете?

Хорошо показываю, но только галочку поставьте? что я вас предупреждал!

Модерация
Комментарий заминусован посетителями. (показать)

Хм. Когда видишь "+8 16 чел., 20:23", то не сразу сообразишь, что одобривших тут 12 человек

Модерация
Комментарий заминусован посетителями. (показать)

А еще хуже, что там может быть целая ветка комментариев спряталась. Лучше бы убрали скрытие. Тем более, что на Чита.ру и так жёсткая цензура, так что ничего такого мы там не увидим

Модерация
Комментарий заминусован посетителями. (показать)

Неплохая статья. Она немного повысит уровень образованности местной аудитории в этой области

Модерация
Комментарий заминусован посетителями. (показать)

Молодцы, не стоите на месте. Идея писать кол-во проголосовавших здравая, теперь многое прояснится, думаю. Я не специалист в теме, но по-моему лукавите немного, говоря про кэширование. Допустим, за него отвечает memcache. Вася ставит "-", рейтинг становится "-1", в memcache "-1", в mysql (или что там у вас) ещё пока "0". Тут Петя ставит ещё "-", рейтинг становится "-2", в memcache "-2", в mysql ещё пока "0" (пять минут после Васи не прошло), Ajax (например) показывает Пете вполне актуальные "-2" (т.е. берёт рейтинг из кэша, а не базы где пока "0"). Что мешает nginx (надеюсь) отдавать рейтинг сразу из кэша (того самого где берёт ajax), а не из базы, а базу с кэшем синхронизировать прозрачно от посетителей? Ведь так количество запросов к базе упадёт, и рейтинг всегда будет актуальный.

Модерация
Комментарий заминусован посетителями. (показать)

а почему бы отдельно + и - не показывать?

Модерация
Комментарий заминусован посетителями. (показать)

Прописные истины разжевали.

У большинства пользователей есть понимание работы сайтов и негодования не возникает.

Это говорит о том, что негодующие это неграмотные (в плане компа) люди, либо малолетки, которые умеют только одну кнопку на мешке жать.

Модерация
Комментарий заминусован посетителями. (показать)

Понимание работы сайта должно быть у специалистов, а не у пользователей. Чихала я, как стиральная машинка устроена, главное, чтобы она стирала и отстирывала. И пользователям должно быть удобно пользоваться.

Модерация
Комментарий заминусован посетителями. (показать)

не любит Читару критики в свой адрес, ох не любит.

Модерация
Комментарий заминусован посетителями. (показать)

А еще когда отзыв пишешь, то все имеющиеся комментарии скрываются. Я, может, перечитать их хочу, сравнить, процитировать, поддержать, опровергнуть или просто ответить на несколько высказываний сразу. Приходится две вкладки открывать и скакать туда-сюда за нужным текстом.

Модерация
Комментарий заминусован посетителями. (показать)

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

Модерация
Комментарий заминусован посетителями. (показать)

такя-же ситуация. а ты попробуй попеременно

+и- понажимать, удивишься! только не пропустят меня!

Модерация
Комментарий заминусован посетителями. (показать)

"+" затем "-", секунд через 20 "−1 1 чел., 12:09"))))

Модерация
Комментарий заминусован посетителями. (показать)

"+1 1 чел., 12:24" ))))) "ни че не понимаю"(С)

Модерация
Комментарий заминусован посетителями. (показать)

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

Модерация
Комментарий заминусован посетителями. (показать)

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

.

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

.

в общем, нет предела совершенству. да, совершенство будет чуточку неполным, если ТРОЕТОЧИЯ так и не разрешат. не больше трех троеточий на коммент из двух абзацев - вполне в рамках нормы языка. если кого-то ответственного коробит этот замечательный знак препинания - пусть сдерживает свои порывы :-)

.

в целом сайт на пять, стоит добиться плюса к этой пятерке.

Модерация
Комментарий заминусован посетителями. (показать)

Смайликов! Смайлики запилите! =)

Хотя по поводу многоточия - абсолютно согласен =)

Модерация
Комментарий заминусован посетителями. (показать)

я бы всё же называл этот знак препинания многоточием)

Модерация
Комментарий заминусован посетителями. (показать)

Люди, которые на ЭТО пожаловались, просто не грамотные в плане технологий, это же блин ежу понятно, что не ты один оцениваешь комментарий, там одновременно тыкает кнопки плюс-минус как минимум пара сотен если не тысяч таких же неграмотных лиц

Модерация
Комментарий заминусован посетителями. (показать)

нас неграмотных миллионы!

Модерация
Комментарий заминусован посетителями. (показать)

самые умные кнопки тыкают, а неграмотные кликают

Модерация
Комментарий заминусован посетителями. (показать)

А что на Читу.ру можно ходить только грамотным в плане технологий. Вас там сколько наберется 10 минус два? Остальные - мы.

Модерация
Комментарий заминусован посетителями. (показать)

А почему бы не сделать "плюсы" отдельно, а "минусы" отдельно- тогда бы было понятно сколько за, сколько против. А тут как то статистика неправильная получается..

Модерация
Комментарий заминусован посетителями. (показать)

проголосовало 8 человек , их них четыре "+" сиди и считай..

Модерация
Комментарий заминусован посетителями. (показать)

От общего количества "проголосовавших" (чел.) вычитаешь количество "плюсиков" (+) и делишь пополам, получаешь количество поставивших "минусик"!

А после этого найти количество поставивших "плюсик" (путём вычитания найденного числа из общего количества "проголосовавших") не составляет никакого труда.

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

Модерация
Комментарий заминусован посетителями. (показать)

я ради интереса ко всем комментариям сейчас ставил плюсы и минусы, наблюдая за результатом :)

Модерация
Комментарий заминусован посетителями. (показать)

Не понятно