es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se previene que un usuario desactive su aplicación manteniendo presionada la tecla de actualización?

Recientemente tuve un tiempo fuera en un servidor de aplicación Nginx/Rails. Resulta que estábamos siendo bombardeados con solicitudes a una URL en particular que tarda unos segundos en cargarse. Parece ser que un usuario estaba refrescando constantemente esa página durante varios minutos; supongo que accidentalmente colocó algún objeto sobre su teclado de manera que activara una corriente continua de refrescos en el navegador.

Independientemente de la causa, necesito implementar protección contra este tipo de problema, y quiero hacer notar que no se trata de contenido estático. Es contenido dinámico específico para cada usuario que se encuentra detrás de una autenticación.

He investigado sobre el uso de Cache-Control, pero parece que esto no es viable. En Chrome, al menos, refrescar una página en la misma pestaña generará una solicitud sin importar el encabezado Cache-Control (cf iis – ¿Chrome está ignorando Cache-Control: max-age? – Stack Overflow)

Creo que la solución podría ser limitar la velocidad. Si es así, no podría hacerlo basado en la dirección IP porque muchos de nuestros clientes comparten la misma. Sin embargo, tal vez podría agregar un nuevo encabezado para identificar al usuario y luego aplicar limitación de velocidad en Nginx basado en esto.

¿Suena esto como el camino a seguir? ¡Esto parece ser un problema bastante común!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución para una interrupción del servidor de aplicaciones Nginx/Rails

    Como experto en IT especializado en ruby-on-rails, nginx, navegador, control de caché y limitación de velocidad, se puede resolver una interrupción reciente en un servidor de aplicaciones Nginx/Rails debido a una continua secuencia de solicitudes a una URL específica implementando la limitación de velocidad en Nginx.

    En este caso, Cache-Control puede no ser efectivo, ya que refrescar una página dentro de la misma pestaña desencadena una solicitud sin importar el encabezado Cache-Control. Por lo tanto, el acceso con limitación de velocidad basado en un nuevo encabezado que identifique a un usuario puede proporcionar una solución.

    Sin embargo, la limitación de velocidad basada en IP puede no ser aplicable ya que muchos clientes comparten la misma IP. Por lo tanto, usar un encabezado personalizado parece ser una opción factible. Este es un problema común que se puede resolver con la implementación adecuada de la limitación de velocidad en Nginx.

Comments are closed.