http客户端关闭请求,服务端仍然还会执行。基于tcp的http运行
在实际开发过程中,服务端有部分api是比较消耗时间,例如读取文件。
如果客户端等不及,刷新请求,或者不断刷新请求。
服务器端将会不断打开新的文件,资源消耗很长大。很容易就导致服务宕机
当然还有通过nginx提供静态文件下载的,这种情况,是分块读取文件,并依次返回,
任何一次的tcp的send失败都会报错并处理,可以是中断也可以是重试
为什么在正常web开发中不能想nginx代理静态文件一样,用户端关闭连接就直接停止服务。
其原因是,http过程中,大多数是在request和response是才有tcp通信,中间的操作并没有通信。
用户断开连接服务端并不知道。在request和response期间的任何操作都无法因用户中断。
除非在进行操作的过程中不断监听一下连接是否断开。