¿Cuánto tiempo puede esperar el navegador antes de que se muestre un error antes de que el servidor responda para solicitarlo? ¿Puede ser este tiempo ilimitado?¿Cuánto tiempo esperará el navegador después de una solicitud de Ajax?
Respuesta
Si está utilizando una llamada jQuery $ .ajax, puede configurar la propiedad de tiempo de espera para controlar la cantidad de tiempo antes de que una solicitud regrese con un estado de tiempo de espera excedido. El tiempo de espera se establece en milisegundos, así que simplemente configúrelo a un valor muy alto. También puede establecerlo en 0 para "ilimitado", pero en mi opinión, debe establecer un valor alto en su lugar.
Nota: ilimitado es actually the default pero la mayoría de los navegadores tienen tiempos de espera predeterminados que se verán afectados.
Cuando se devuelve una llamada ajax debido al tiempo de espera, se devolverá con un estado de error de "tiempo de espera" que puede manejar con un caso separado si es necesario.
Así que si desea establecer un tiempo de espera de 3 segundos, y manejar el tiempo de espera aquí es un ejemplo:
$.ajax({
url: "/your_ajax_method/",
type: "GET",
dataType: "json",
timeout: 3000, //Set your timeout value in milliseconds or 0 for unlimited
success: function(response) { alert(response); },
error: function(jqXHR, textStatus, errorThrown) {
if(textStatus==="timeout") {
alert("Call has timed out"); //Handle the timeout
} else {
alert("Another error was returned"); //Handle other error type
}
}
});
Al establecer el valor 'timeout' en' 0' se establece el tiempo de espera AJAX en un período indefinido (lea ilimitado). – John
@John o incluso no lo configura en absoluto (leer 0 es el valor predeterminado). –
Recibo un "error" en textStatus no como "timeout" – UmaShankar
¿Puede explicar un poco más sobre lo que está tratando de lograr? ¿Tiene un largo proceso en un servidor, desea cambiar la configuración en una máquina local o está buscando una forma de administrarlo? para un gran número de usuarios?
El tiempo que esperará el navegador depende de una serie de factores, p. donde ocurre el tiempo de espera - ¿está en el nivel TCP, el servidor o el navegador local?
Si tiene un proceso de larga ejecución en un servidor y desea actualizar una página web posteriormente, la forma más habitual de manejarlo es ejecutar el proceso largo de forma asíncrona y notificar al cliente cuando esté completo, p. tener una llamada ajax que sondee el servidor, o use HTTP 1.1 y envíe un flujo de notificación al cliente.
En cualquier caso, aún es posible que la conexión se cierre, por lo que el cliente aún necesitará la posibilidad de volver a abrirla.
Sí y no. Sí, el servidor puede hacerlo o estar configurado para hacerlo, no los navegadores (no sé sobre los detalles de la versión/distribuidor) pueden tener habilitados los tiempos de espera.
Hay 2 soluciones, aunque para lograr/emulando este a través de HTTP:
- Si esto es simple un script de larga ejecución y que está a la espera de los resultados de este no es el camino a seguir, que hagan lo mismo que en vez se mencionó el cartel anterior y se usa el procesamiento asincrónico con el sondeo del servidor para los resultados, esta sería una solución de fuego mucho más segura. Por ejemplo: una secuencia de comandos en miniatura desde el lado del servidor del procesador de imágenes: el usuario carga una imagen, el servidor devuelve un 200 y una "ID de trabajo". El cliente (javascript ^^) puede usar el ID de tarea para solicitar el estado/resultado del trabajo.
- Si su objetivo es tener algo así como una conexión en tiempo real entre el navegador y el servidor (conexión de 1 vía, una vez que el navegador realiza la solicitud no se puede enviar más información sin utilizar nuevas solicitudes (ajax ^^)), esto es llamado interrogación larga/reverse ajax y se puede usar para comunicación en tiempo real a través de http. Existen varias técnicas que utilizan 2 solicitudes largas sondeadas en paralelo, de modo que una vez que una de ellas agota el tiempo de espera, la segunda se activa y la primera intenta volver a conectarse.
Gran respuesta, gracias –
Encontré que, en el caso de una solicitud normal (página HTML), los navegadores ejecutan el tiempo de espera después de cca. 30 segundos Es importante, porque otros participantes probablemente lo sigan: proxies, enrutadores (¿los enrutadores juegan en este juego? No estoy seguro). Estoy usando 4 segundos retraso largo del servidor (si no hay nada que enviar al cliente), y mi cliente AJAX realiza otra solicitud HTTP de inmediato (estoy en la red local, no hay retraso de Internet). 4 segundos es lo suficientemente largo como para no sobrecargar el servidor y la red con encuestas frecuentes, y es lo suficientemente corto para el caso, cuando de alguna manera una encuesta cae fuera de la fila que el cliente no puede detectar y manejar. También hay otros problemas con el cometa (solicitud HTTP larga): límite del número de solicitudes HTTP simultáneas, manejo de eventos del lado del cliente (debe enviarse al servidor de inmediato), detección y recuperación de servidores/redes inactivas , manejo multiusuario, etc.
- 1. Averigüe cuánto tiempo tomó una solicitud de Ajax para completar
- 2. ¿Cuánto tiempo pueden ser los parámetros en una solicitud get?
- 3. ¿Cómo cambiar la URL después de una solicitud de Ajax?
- 4. jQuery Ajax Solicitud dentro de Ajax Solicitud
- 5. Identificación de solicitud de Ajax o solicitud de navegador en el controlador de grails
- 6. Recargar widgets de dojo después de la solicitud de ajax
- 7. Asegurar una solicitud de Ajax
- 8. documento de jQuery listo después de la solicitud de ajax
- 9. ¿Cómo puedo calcular cuánto tiempo tarda una función en jQuery?
- 10. ¿Cuánto tiempo durará una aplicación ASP.NET MVC?
- 11. Comprobar el estado de una solicitud jQuery ajax
- 12. php :: ¿cuánto tiempo permanecen los archivos tmp?
- 13. Llamada de AJAX cancelada por el navegador
- 14. Diferencia entre la solicitud AJAX y una solicitud normal del navegador
- 15. Enviando una solicitud Ajax antes de enviar el formulario
- 16. ¿Cómo detectar el tiempo de espera en una llamada AJAX (XmlHttpRequest) en el navegador?
- 17. cuánto solicitud HTTP simultánea puede manejar erlang
- 18. Respuestas múltiples de una solicitud de AJAX
- 19. "Estado de ocupado" del navegador con Ajax
- 20. ¿Cómo continuar el proceso después de responder a la solicitud de ajax en PHP?
- 21. PUT solicitud de Ajax
- 22. ¿Cuánto tiempo puede durar una página web?
- 23. Cómo reducir/eliminar el tiempo de espera/latencia en la solicitud AJAX
- 24. Encuesta larga congela el navegador y bloquea otra solicitud de ajax
- 25. ¿Cuánto tiempo debo mantener mis proyectos de tenedor en github?
- 26. Respuesta múltiple Solicitud AJAX
- 27. HTTPWebRequest & Después de un tiempo, 400 (Solicitud incorrecta) comienza
- 28. Express.js Tiempo de espera de solicitud HTTP
- 29. ¿Cuánto dura un 302 redireccionamiento guardado en el navegador?
- 30. HTTP, 408 Tiempo de espera de solicitud
No está seguro de lo que está utilizando, pero sí se puede extender el tiempo de espera. Para infinito, no sé. Aunque recomendaría no hacer un tiempo ilimitado. Si lo necesita, siempre puede configurarlo en algo así como 90 segundos o un poco más. Sin embargo, si lleva más de 30 segundos, probablemente haya una manera mejor y más rápida de hacer algo. – Matt
+1 - También tengo curiosidad sobre esto. Sospeché que debe preocuparse de que el cliente le pase el tiempo. Usted no tiene control sobre esto. Una búsqueda en google apareció esto. Básicamente dice que el servidor o el navegador pueden exceder el tiempo de espera. Así que elegiría algo que el valor predeterminado para todos los navegadores no excederá. http://support.microsoft.com/kb/813827 – mrtsherman
Al eliminar errores, una vez salí a almorzar después de la llamada ajax y volví al navegador esperando la respuesta. Hice clic en ir a mi depurador y el navegador recogió la respuesta. No creo que esto cuente, porque estaba depurando –