在.NET中,httpResponse.end()
状态的描述“将所有当前缓冲的输出发送到客户端”。任何人都可以向我解释这意味着什么?具体是什么是'缓冲输出'?我问,因为我被要求用httpResponse.end
替换HttpContext.Current.ApplicationInstance.CompleteRequest()
。当涉及到文件时,这会导致问题,所以我猜这个短语与它有关。
答案 0 :(得分:2)
不是在将每一位信息写入输出流时发送每一位信息,而是存储您在内存中写入的内容,直到它具有“足够”的数据,认为值得花时间将其发送到客户端。缓冲区的大小可以根据缓冲数据的上下文和原因而有很大不同。 “刷新”缓冲区是为了处理缓冲区中的所有未决数据(在这种情况下,处理意味着通过网络将其发送到客户端)。这就是end
在您的情况下正在做的事情。
缓冲可以出于多种原因,但通常是性能问题。如果您为流写入的每个字符发送了一个网络数据包,或者(在许多情况下)传递给Write
的每个字符串,那将非常浪费和耗费时间。通过发送更少,更大的信息包,应用程序将更快地执行。
答案 1 :(得分:1)
缓冲输出表示准备发送到客户端但尚未发送到客户端的任何输出。
答案 2 :(得分:1)
缓冲输出是程序已经生成的输出,但尚未转发到预定目的地。
缓存在I / O操作中经常使用,以避免以较小的增量发送/写入数据的成本:系统在写入时收集输出到目的地,而不是在内存区域收集更大的块称为“缓冲区”,仅在达到特定大小时才发送/写入数据。
缓冲数据有两种方式到达目的地:
httpResponse.end
就是这样一种方法:它通过将你目前所写的所有内容发送给客户端来清空缓冲区。