Лучший метод для отслеживания количества посещений веб-страниц и выявления злоупотреблений - PullRequest
2 голосов
/ 26 января 2011

У меня есть веб-сайт ASP.NET MVC с базой данных песен. Я хотел бы отследить, сколько просмотров страниц получает каждая песня, но я не хочу удваивать счет, если люди нажимают на нее несколько раз в день. Если пользователь идет на песню 10 раз в день, я хочу, чтобы мой счет увеличивался только один раз в день.

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

Ответы [ 3 ]

1 голос
/ 26 января 2011

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

0 голосов
/ 26 января 2011

Одним из вариантов могут быть профили ASP.NET, но возникают ужасные проблемы с хранением данных, если вы не хотите накатить туда свое собственное постоянство.убедитесь, что вы не учитываете ботов.

Другой вариант - украсть страницу из книги Google и поставить отслеживание в виде асинхронного JavaScript.Тогда вам нужно будет cookie-файлы посетителей и выдвинуть идентификатор на стороне клиента (или прочитать его из JS, если вам нравятся такие вещи).Но это, как правило, устраняет ботов, так как большинство из них не поддерживают JavaScript.Тем не менее.

0 голосов
/ 26 января 2011

Напишите модуль http, сохраните IP-адрес и песню в базе данных.

При составлении отчетов используйте

select DISTINCT IP, SONG_NAME FROM T_SongAccess

Альтернативно

select count(*) from T_SongAccess 
WHERE SONG_NAME = 'XY' 
AND IP='abc' 
and date_access between today:00:00:00 and today:23:59:49

if count > 0 then
    -- don't register, already accessed today
else
    -- register access
end if
...