2009-05-10 14 views

Respuesta

1

Que yo sepa, no hay navegadores disponibles en este momento que envíen ningún tipo de mensaje/encabezado al servidor que indique si la solicitud proviene de una actualización o no.

La única forma en que puedo ver que un usuario no actualice la página es hacer un seguimiento de las direcciones IP y las horas en que un usuario ve una página, y luego si el usuario vio la página hace menos de 30 minutos, por ejemplo, lo descartaría como una actualización y no incrementa el conteo de la vista de página.

OMI más página se actualiza debe se contará como una vista de página de todos modos, ya que la única razón que tengo para refrescante es ver nuevos datos que podrían haber sido añadidos, o la actualización accidental ocasional/descarga después de un bloqueo del navegador (que el método anterior descartaría).

+1

El seguimiento de los IP es una mala idea. Muchas redes ofrecen la misma IP externa para sus 'usuarios. – Roman

+1

Sí, algún otro método para rastrear usuarios únicos sería mejor (cookies, IP + User Agent), pero la idea es rechazar las vistas de página que usted cree (como usted no puede saber) del usuario que actualiza la página. – henrym

0

Puede otorgarle a cada cookie de usuario, que expira al final del día, un número único. Si vuelve a cargar una página, puede verificar si ya se ha contado ese día.

0

Puede crear una tabla con visitantes únicos de las páginas, p. Ej. VisitorIP + X-Forwarded-Forment, cadena de User-Agent junto con un PageID de algún tipo. Si los datos en sí mismos son irrelevantes, puede crear un hash md5/sha1 a partir de estos valores (además del PageID por supuesto). Sin embargo, ten en cuenta que esta tabla crecerá realmente rápido.

Aconsejo no establecer cookies para ese fin. Tienen un tamaño limitado y con muchas páginas visitadas por el usuario, puede alcanzar ese límite y hacer que la solución no sea confiable. También hace más difícil almacenar en caché dicha página en el lado del cliente (ver Cacheability), ya que se convierte en contenido interactivo.

0

Puede escribir un middleware de django y capturar request.url, luego configurar una tabla con columnas url/accesses. Tenga cuidado con las transacciones para la actualización simultánea. Si tiene problemas de carga, puede usar memcached con incr o agregar función y periódicamente actualizar la tabla de la base de datos para evitar bloqueos de transacciones.

Cuestiones relacionadas