Daos
Новичок
Популярность страницы (товара, .....)
И так, задача считать популярность страницы. Именно популярность, а не рейтинг. В простейшем случае это заход пользователем на страницу, популярность которой мы считаем.
Проблема, не дать одному пользователю увеличить популярность страницы более одного раза. Наиболее приемлемым решением посчитал блокировать ip скажем на 2-3 часа (из-за невозможности 100% идентифицировать уникального пользователя, и дабы не отрубать возможность людям сидящим за прокси). Для этого нужно заюзать таблицу в базе, куда писать id страницы | ip | дата И соответственно сверять каждый заход на страницу с базой, и либо вписывать новую строку, либо обновлять время. Плюс пишем в сесию, некий ключ, блокирующий id этой страницы от увеличения популярности.
Имеем для доброго пользователя:
1. Один запрос-проверка к базе, далее ключ в сессии не дает сработать проверке, до закрытия броузера.
2. При закрытии броузера и повторном заходе на страницу, срабатывает снова пункт 1 с учетом 2-3 часовой блокировки ip
Поисковики (идут с множеством одновременных сессий):
1. Тоже что и выше, только защита ключа сессии не срабатывает, и по этому происходит перманентная проверка базы, но срабатывает (слава богу) блокировка ip.
Для злого пользователя (долбит с разных ip и сменой сессий)
1. Постоянная проверка базы, с отсечением всех используемых им ip на положеное время. То есть популярность таки увеличится на кол-во используемых им ip адресов
Есть у кого какие идеи, по улучшению этого алгоритма?
И так, задача считать популярность страницы. Именно популярность, а не рейтинг. В простейшем случае это заход пользователем на страницу, популярность которой мы считаем.
Проблема, не дать одному пользователю увеличить популярность страницы более одного раза. Наиболее приемлемым решением посчитал блокировать ip скажем на 2-3 часа (из-за невозможности 100% идентифицировать уникального пользователя, и дабы не отрубать возможность людям сидящим за прокси). Для этого нужно заюзать таблицу в базе, куда писать id страницы | ip | дата И соответственно сверять каждый заход на страницу с базой, и либо вписывать новую строку, либо обновлять время. Плюс пишем в сесию, некий ключ, блокирующий id этой страницы от увеличения популярности.
Имеем для доброго пользователя:
1. Один запрос-проверка к базе, далее ключ в сессии не дает сработать проверке, до закрытия броузера.
2. При закрытии броузера и повторном заходе на страницу, срабатывает снова пункт 1 с учетом 2-3 часовой блокировки ip
Поисковики (идут с множеством одновременных сессий):
1. Тоже что и выше, только защита ключа сессии не срабатывает, и по этому происходит перманентная проверка базы, но срабатывает (слава богу) блокировка ip.
Для злого пользователя (долбит с разных ip и сменой сессий)
1. Постоянная проверка базы, с отсечением всех используемых им ip на положеное время. То есть популярность таки увеличится на кол-во используемых им ip адресов
Есть у кого какие идеи, по улучшению этого алгоритма?