2009-10-27 23 views
19

Tenía la esperanza de que si alguien puede responder a una pregunta fundamental que tengo con respecto a la actualización de una página web.¿Qué sucede cuando actualizamos una página web?

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

Suponiendo ahora, cuando el usuario hace clic en el botón de enviar, la página web está ejecutando la 5ª función y, mientras tanto, el usuario actualiza su navegador;

¿Qué pasará con la página ya procesar? ¿Se terminará la página de inmediato? o se le permitirá funcionar hasta que ejecute la vigésima función? o se destruirá la página en ejecución y se creará y enviará una nueva página al cliente?

Gracias por su respuesta.

Respuesta

15

Una vez que se hace 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 está comprobando activamente si la conexión es user has aborted. El servidor solo sabe que se ha cancelado cuando intenta devolver los resultados de la solicitud.

Internet está 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.

0

Simplemente, la página que el usuario está viendo se pierde a menos que esté en sesión, no pueden volver a buscarla. 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 ejecución

0

El código continuará hasta el final.

+0

hmmm ... cuidado de proporcionar una referencia a este reclamo? – jldupont

+0

@Dani - no es cierto. al menos para PHP lo sé. – mauris

+1

para asp.net, al menos cuando presiono accidentalmente la actualización en la página mientras el servidor estaba atascado en una operación larga, veo que completa todo el código y solo luego vuelve a cargar la página. – Dani

0

creo una página web (en el lado del cliente, por supuesto) se ejecuta en un solo hilo . Si su "onsubmit" llama un rastro de funciones, eso depende de usted, pero en algún momento se le (tal vez) que desee presentar () la forma.

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

Por otro lado, si se pulsa el botón "recargar", la ejecución es terminado.

2

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

Si la página era una llamada POST, el navegador a publicar los datos de nuevo.

página ha completado cargado:

Cuando se carga por completo, la ejecución en el lado del servidor debe ser completado (a menos que se ejecuta procesos adicionales, o código de fondo de gestión, que no enviará más datos al cliente).

La página está cargando a mitad de camino a través de:

La conexión de la página actual se desconectará inmediatamente - si la página aún está cargando. Depende del servidor si la página continuará ejecutándose o finalizará. Por ejemplo, en PHP podemos ignorar_user_abort() para mantener el script en ejecución, incluso si la página se terminó a 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 framework ASP.NET.

+1

Una vez que se envía una página al navegador del cliente, el servidor no tiene nada que ver con ** hasta que ** el cliente desee hacer otra cosa. – jldupont

+0

Por supuesto, el servidor puede retrasar el lado del cliente al retrasar el envío del final de la secuencia de datos ... pero esa es otra historia. – jldupont

+0

@jldupont: mientras se carga la página (el contenido de la página, no los componentes externos), el servidor aún tiene conexión con el cliente. – mauris

0

se ejecutarán todos los funcs, incluso si tiene una actualización, puede hacer una prueba. pero en .NET que proporciona una función para comprobar si el cliente sigue conectado con el servidor (para su primera presenten, significa que el servidor puede comprobar si el cliente está esperando la respuesta en cualquier momento después de enviar)

Cuestiones relacionadas