为什么HTTP下载的最后一块真的很慢?

时间:2009-09-21 13:14:57

标签: linux http download yslow

我在下载开头有内容长度。所以我知道我需要多少字节。 我下载1024字节的块。在最后一个块中,我请求剩余的字节数。我正在使用读取功能。 但最后一块需要花很多时间才能到达。这是正常的吗?

3 个答案:

答案 0 :(得分:3)

也许你的最后一个块不够大,无法刷新缓冲区。

您可以检查如何刷新fd并在发送最后一个块后手动执行。

答案 1 :(得分:2)

没有。我的猜测是服务器缺少对flush()的调用,因此输出会在某个缓冲区中挂起,直到它超时(然后,服务器将刷新)。

答案 2 :(得分:0)

由于 我解决了这个问题。我的代码使用应用程序级缓冲区,因此最后一个块需要很长时间才能下载。 我一直在使用Bryant的书中给出的强大的io功能。我曾经研究过这段代码并忘记了它。我修改了代码并发现代码使用了缓冲。

bryant's book - rio functions

我犯的另一个错误是使用HTTP / 1.1。 HTTP 1.0使服务器在传输数据后关闭连接。 所以这解决了这个问题。