2009-05-10 2 views

ответ

1

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

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

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

+1

Отслеживание IP-адресов - плохая идея. Многие сети предоставляют одинаковый внешний IP-адрес для своих пользователей. – Roman

+1

Да, какой-то другой способ отслеживания уникальных пользователей был бы лучше (файлы cookie, IP + User Agent), но идея состоит в том, чтобы отклонить просмотры страниц, которые, по вашему мнению (как вы не можете надежно узнать), от пользователя, обновляющего страницу. – henrym

0

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

0

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

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

0

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

Смежные вопросы