4

在 .NET 中,httpResponse.end()状态描述为“将所有当前缓冲的输出发送到客户端”。谁能给我解释一下这是什么意思?具体什么是“缓冲输出”?我问是因为我被要求替换httpResponse.endHttpContext.Current.ApplicationInstance.CompleteRequest(). 当涉及文件时,这会导致问题,所以我猜这句话与它有关。

4

3 回答 3

2

它不会在您将信息写入输出流后立即发送每一个信息,而是将您写入的内容存储在内存中,直到它拥有“足够”的数据,认为值得花时间将其发送给客户端。缓冲区的大小可以根据上下文和缓冲数据的原因而有很大差异。“刷新”缓冲区是处理缓冲区中的所有待处理数据(在这种情况下,处理意味着通过网络将其发送到客户端)。这就是end你的情况。

可以出于多种原因进行缓冲,但通常是性能问题。如果您为写入流的每个字符或(在许多情况下)传递给Write. 通过发送更少、更大的信息包,应用程序将执行得更快。

于 2013-01-24T19:27:03.013 回答
1

缓冲输出是指任何准备好发送到客户端但尚未发送到客户端的输出。

于 2013-01-24T19:26:22.480 回答
1

缓冲输出是您的程序已经生成但尚未转发到其预期目的地的输出。

缓冲在 I/O 操作中大量使用,以避免以小增量发送/写入数据的成本:系统不会在您写入时将输出传递到其目的地,而是在称为“缓冲区”,并且仅在达到一定大小时才发送/写入数据。

缓冲数据有两种方式到达目的地:

  1. 输出量达到某个阈值,或
  2. 您调用一些方法来显式地“刷新”缓冲区。

httpResponse.end就是这样一种方法:它通过将您到目前为止写入的所有内容发送到客户端来清空缓冲区。

于 2013-01-24T19:29:23.570 回答