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

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

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

最佳答案

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

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

关于c# - 来自 httpResponse.end() 的缓冲输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14509050/

相关文章:

asp.net - 如何在spring集成中设置REQUEST HEADER

c# - 结合类属性参数和插入到 ViewData 的继承

c# - 如何使用 Xamarin.iOS 枚举 ipv4 地址和 ipv4mask

c# - FTP 上传失败 'The underlying connection was closed: An unexpected error occurred on a receive.'

asp.net - HttpContext.Current.User.Identity.Name 返回错误的用户名

javascript - 如何捕获从 iframe 内部抛出的异常?

c# - 通过 XSLT 在 XML 中格式化日期

c# - 未设置 cookie 路径时的 CookieCollection 问题

c# - Azure 持久实体,用于存储运行之间的函数应用程序状态 (.net 6)

c# - SQL DataReader 网络使用限制