来自httpResponse.end()的缓冲输出?

时间:2013-01-24 19:19:45

标签: c# asp.net .net vb.net

在.NET中,httpResponse.end()状态的描述“将所有当前缓冲的输出发送到客户端”。任何人都可以向我解释这意味着什么?具体是什么是'缓冲输出'?我问,因为我被要求用httpResponse.end替换HttpContext.Current.ApplicationInstance.CompleteRequest()。当涉及到文件时,这会导致问题,所以我猜这个短语与它有关。

3 个答案:

答案 0 :(得分:2)

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

缓冲可以出于多种原因,但通常是性能问题。如果您为流写入的每个字符发送了一个网络数据包,或者(在许多情况下)传递给Write的每个字符串,那将非常浪费和耗费时间。通过发送更少,更大的信息包,应用程序将更快地执行。

答案 1 :(得分:1)

缓冲输出表示准备发送到客户端但尚未发送到客户端的任何输出。

答案 2 :(得分:1)

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

缓存在I / O操作中经常使用,以避免以较小的增量发送/写入数据的成本:系统在写入时收集输出到目的地,而不是在内存区域收集更大的块称为“缓冲区”,仅在达到特定大小时才发送/写入数据。

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

  1. 输出量达到某个阈值,或
  2. 您调用一些方法来显式“刷新”缓冲区。
  3. httpResponse.end就是这样一种方法:它通过将你目前所写的所有内容发送给客户端来清空缓冲区。