Web applications 在浏览器中取消页面加载时,服务器中会发生什么情况?

Web applications 在浏览器中取消页面加载时,服务器中会发生什么情况?,web-applications,Web Applications,在虚拟的web应用程序中 用户单击一个链接 服务器开始准备响应,但需要几秒钟 用户取消页面加载 请求发生了什么变化? 服务器是否继续准备响应? 响应是否到达浏览器?我认为浏览器关闭了实际的TCP连接,因此web服务器将无法发送数据,除非在准备数据时专门编程检测断开的连接,否则即使用户取消,页面也将被完全处理 虽然我对这些事情知之甚少,但这是我的猜测。服务器将继续准备响应。当它尝试向客户端发送响应时,它将失败。实际发生这种情况的时间可能取决于实际的应用程序服务器实现、是否缓冲响应等 在Java E

在虚拟的web应用程序中

  • 用户单击一个链接
  • 服务器开始准备响应,但需要几秒钟
  • 用户取消页面加载
  • 请求发生了什么变化? 服务器是否继续准备响应?
    响应是否到达浏览器?

    我认为浏览器关闭了实际的TCP连接,因此web服务器将无法发送数据,除非在准备数据时专门编程检测断开的连接,否则即使用户取消,页面也将被完全处理


    虽然我对这些事情知之甚少,但这是我的猜测。

    服务器将继续准备响应。当它尝试向客户端发送响应时,它将失败。实际发生这种情况的时间可能取决于实际的应用程序服务器实现、是否缓冲响应等

    在Java EE应用程序服务器(Tomcat和WebLogic,可能还有其他服务器)中,您会遇到以下异常:

    java.net.SocketException: Connection reset by peer: socket write error
    

    PHP了解三种连接状态:正常、中止和超时。您可以使用函数更改PHP关于中止连接的策略(默认情况下,脚本终止)。从注释部分:

    “在尝试向客户端发送信息之前,PHP不会检测到用户已中止连接。”

    请注意,如果服务器的输出已缓冲,则发送可能不会立即发生


    有关更多详细信息,请参阅。

    如果在请求完全发送到服务器之前连接中断,则不会进行响应处理

    如果请求已完全发送,则会触发服务器端处理,并且尽管连接已断开,响应生成仍将继续


    在ASP.NET中,如果客户端不再连接,您可以使用Response.IsClientConnected来停止处理,从而节省CPU时间并将线程立即返回到线程池,从而检测到这一点。

    Apache或其他WebBrowser是否向PHP发送FIN/ACK?