在 .NET 中,httpResponse.end()
状态描述为“将所有当前缓冲的输出发送到客户端”。谁能给我解释一下这是什么意思?具体什么是“缓冲输出”?我问是因为我被要求替换httpResponse.end
为HttpContext.Current.ApplicationInstance.CompleteRequest()
. 当涉及文件时,这会导致问题,所以我猜这句话与它有关。
问问题
1036 次
3 回答
2
它不会在您将信息写入输出流后立即发送每一个信息,而是将您写入的内容存储在内存中,直到它拥有“足够”的数据,认为值得花时间将其发送给客户端。缓冲区的大小可以根据上下文和缓冲数据的原因而有很大差异。“刷新”缓冲区是处理缓冲区中的所有待处理数据(在这种情况下,处理意味着通过网络将其发送到客户端)。这就是end
你的情况。
可以出于多种原因进行缓冲,但通常是性能问题。如果您为写入流的每个字符或(在许多情况下)传递给Write
. 通过发送更少、更大的信息包,应用程序将执行得更快。
于 2013-01-24T19:27:03.013 回答
1
缓冲输出是指任何准备好发送到客户端但尚未发送到客户端的输出。
于 2013-01-24T19:26:22.480 回答
1
缓冲输出是您的程序已经生成但尚未转发到其预期目的地的输出。
缓冲在 I/O 操作中大量使用,以避免以小增量发送/写入数据的成本:系统不会在您写入时将输出传递到其目的地,而是在称为“缓冲区”,并且仅在达到一定大小时才发送/写入数据。
缓冲数据有两种方式到达目的地:
- 输出量达到某个阈值,或
- 您调用一些方法来显式地“刷新”缓冲区。
httpResponse.end
就是这样一种方法:它通过将您到目前为止写入的所有内容发送到客户端来清空缓冲区。
于 2013-01-24T19:29:23.570 回答