在 .NET 中,httpResponse.end()
的描述指出“将所有当前缓冲的输出发送到客户端”。谁能给我解释一下这是什么意思?具体什么是“缓冲输出”?我问是因为我被要求用 HttpContext.Current.ApplicationInstance.CompleteRequest()
替换 httpResponse.end
。当涉及文件时,这会导致问题,所以我猜这句话与它有关。
最佳答案
它不会在您将信息写入输出流后立即发送每一位信息,而是将您写入的内容存储在内存中,直到它有“足够”的数据,它认为值得花时间将其发送到客户端。缓冲区的大小可以根据上下文和缓冲数据的原因而有很大差异。 “刷新”缓冲区就是处理缓冲区中所有待处理的数据(在这种情况下,处理意味着通过网络将其发送到客户端)。这就是 end
在您的案例中所做的。
可以出于多种原因进行缓冲,但通常是性能问题。如果您为写入流的每个字符或(在许多情况下)传递给 Write
的每个字符串都发送一个网络数据包,那将是非常浪费和耗时的。通过发送更少、更大的信息包,应用程序将执行得更快。
关于c# - 来自 httpResponse.end() 的缓冲输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14509050/