Точное количество просмотров страниц в Джанго - PullRequest
10 голосов
/ 10 мая 2009

Каков правильный подход к ведению точного подсчета количества просмотров страницы?

Я использую Django. В частности, я не хочу обновлять страницу, чтобы увеличить ее количество.

Ответы [ 4 ]

1 голос
/ 10 мая 2009

Насколько мне известно, ни один браузер на данный момент не отправляет на сервер какие-либо сообщения / заголовки, сообщающие, был ли запрос обновлен или нет.

Единственный способ, которым я вижу, что пользователь не обновляет страницу, это отслеживать IP-адреса и время, когда пользователь просматривал страницу, а затем, если пользователь последний раз просматривал страницу менее 30 минут назад, скажем, вы бы отклонить его как обновление и не увеличить счетчик просмотров страниц.

ИМО обновляет большинство страниц следует * в любом случае считать просмотром страницы, так как единственная причина, по которой я обновляюсь, - это просмотр новых данных, которые могли быть добавлены, или случайное случайное обновление / перезагрузка после сбой браузера (который вышеуказанный метод отклонил бы).

0 голосов
/ 10 мая 2009

Вы можете написать промежуточное программное обеспечение django и поймать request.url, а затем настроить таблицу со столбцами url / access. Остерегайтесь транзакций для одновременного обновления. Если у вас проблемы с загрузкой, вы можете использовать memcached с функцией incr или add и периодически обновлять таблицу базы данных, чтобы избежать блокировок транзакций.

0 голосов
/ 10 мая 2009

Вы можете создать таблицу с уникальными посетителями страниц, например, VisitorIP + X-Forwarded-For контент, строка User-Agent вместе с PageID некоторых видов. Если сами данные не имеют значения, вы можете создать хеш md5 / sha1 из этих значений (кроме, конечно, PageID). Имейте в виду, однако, что эта таблица будет очень быстро расти.

Я бы посоветовал не устанавливать куки для этой цели. Они имеют ограниченный размер, и, имея много посещенных пользователем страниц, вы можете достичь этого предела и сделать решение ненадежным. Также это усложняет кеширование такой страницы на стороне клиента (см. Кешируемость ), поскольку она становится интерактивным контентом.

0 голосов
/ 10 мая 2009

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

...