Pregunta

Esperaba que alguien pudiera responder una pregunta fundamental que tengo sobre la actualización de una página web.

Tengo un formulario web dotnet donde un usuario completa algunos detalles y hace clic en enviar. El código detrás de la página web tiene aproximadamente 20 funciones para realizar.

Ahora suponiendo que, cuando el usuario hace clic en el botón Enviar, la página web está ejecutando la quinta función y, mientras tanto, el usuario actualiza su navegador;

¿Qué pasará con la página que ya está procesando? ¿La página se cerrará de inmediato? ¿o se le permitirá ejecutar hasta que ejecute la vigésima función? ¿o se destruirá la página en ejecución y se creará una nueva página y se enviará al cliente?

Gracias por sus respuestas.

¿Fue útil?

Solución

Una vez que se realiza una solicitud al servidor desde el navegador, se procesa la página. Incluso si el usuario cancela o detiene la solicitud, el servidor continúa procesando la solicitud. Si el usuario recarga / actualiza la página, es otra solicitud que se ejecutará en paralelo con la primera solicitud.

Incluso en el caso de PHP, el servidor no verifica activamente si el el usuario ha abortado la conexión. El servidor solo sabe que se ha cancelado cuando intenta devolver los resultados de la solicitud.

Internet es un entorno desconectado. El servidor no sabe nada sobre el navegador. Lo único que sabe el servidor es que se ha realizado una solicitud y debe completarla.

Otros consejos

Cuando una página se actualiza en el navegador, el navegador solicita al servidor una copia nueva de la página y sus componentes (CSS, JS, etc. ... si no está en caché).

Si la página era una llamada POST, el navegador POSTARÁ los datos nuevamente.

La página se ha completado cargada:

Cuando se carga completamente, la ejecución en el lado del servidor debe completarse (a menos que ejecute procesos adicionales o ejecute un código de fondo que ya no enviará más datos al cliente).

La página se está cargando a la mitad:

La conexión para la página actual se desconectará inmediatamente - si la página todavía se está cargando . Depende del servidor si la página continúa ejecutándose o finalizando. Por ejemplo, en PHP podemos ignorar_user_abort () para mantener el script ejecutándose incluso si la página se terminó a la mitad de la carga.

Si su servidor es ASP, y hace clic en un botón ASP, la acción (método) del botón se realizará completamente en el lado del servidor, incluso si el usuario se actualiza a la mitad. Así es como se hace el marco ASP.NET.

Simplemente, la página que está viendo el usuario se pierde a menos que en la sesión, no pueda volver a abrirla. Pero el servidor no sabe que el usuario se ha desconectado, por lo que la aplicación continuará ejecutándose, a menos que haya una sesión / tiempo de espera en la aplicación, incluso entonces sería extraño si la sesión no se completara.

Espero que esto ayude.

RE

La ejecución del código continuará hasta el final.

Creo que una página web (en el lado del cliente, por supuesto) se ejecuta en un hilo único . Si su " onsubmit " llama a un rastro de funciones, eso depende de usted, pero en algún momento deseará (tal vez) enviar () el formulario.

En otras palabras (en su caso específico), toda la función continuará hasta que se envíe el formulario.

Por otro lado, si presiona la tecla " recargar " botón, la ejecución se termina .

se ejecutarán todos los funcs, incluso si tiene una actualización, puede hacer una prueba. pero en .net proporciona una función para verificar si el cliente todavía está conectado con el servidor (para su primer envío, significa que el servidor puede verificar si el cliente está esperando la respuesta en cualquier momento después de enviarlo)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top