你目前正处于脱机状态,正在等待 Internet 重新连接

HTTP 文件上载操作需要很长时间才能完成

重要说明:本文包含有关修改注册表的信息。修改注册表之前,一定要先进行备份,并且一定要知道在发生问题时如何还原注册表。有关如何备份、还原和编辑注册表的信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 Microsoft Windows 注册表说明
症状
当使用 HTTP 文件上载功能上载大小为几兆字节的文件时,上载操作需要很长时间才能完成。

注意:此问题记录在征求意见文档 (RFC) 1867“Form-based File Upload in HTML”中。
原因
出现此问题的原因在于默认 Winsock 发送缓冲区为 8 KB,因此 Internet Explorer 以 8 KB 大小的块区提供数据。在普通网络上,这相当于每秒约 80 KB (KBps)(不考虑网络带宽)。

有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
214397 Winsock 设计问题 - 通过 TCP 发送小数据段
解决方案
要解决这一问题,请配置 Internet Explorer 以增大与 Winsock 进行通信时的发送缓冲区。当您使用 HTTP 文件上载方法时,这可以改善网络性能。为此,请按照下列步骤操作。

警告:注册表编辑器使用不当可导致严重问题,可能需要重新安装操作系统。Microsoft 不能保证您可以解决因注册表编辑器使用不当而导致的问题。使用注册表编辑器需要您自担风险。
  1. 启动注册表编辑器 (Regedt32.exe)。
  2. 找到并单击以下注册表项:
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
  3. 编辑菜单上,单击添加值,然后添加以下注册表值:
    数值名称:SocketSendBufferLength
    数据类型:REG_DWORD
    基数:十进制
    数值数据:所需的缓冲区大小(以字节为单位)
    缓冲区大小值选项:
    16 KB 缓冲区 = 16384
    24 KB 缓冲区 = 24576
    32 KB 缓冲区 = 32768
    40 KB 缓冲区 = 40960
    48 KB 缓冲区 = 49152
    56 KB 缓冲区 = 57344
    64 KB 缓冲区 = 65536
  4. 退出注册表编辑器。
请确保测试从 16 KB 缓冲区开始的每个值。当上载性能变得可以接受时,请选择相应的缓冲区值。
状态
这种现象是设计造成的。
更多信息
当您使用本文“解决方案”一节中描述的过程时,任何使用 WININETAPI HTTPSendRequest 函数(如以下 Microsoft Developer Network (MSDN) 网站中所述)的程序都将按注册表项的定义分配和请求 Winsock 发送缓冲区。

有关 HTTPSendRequest 函数的其他信息,请访问下面的 MSDN 网站: 有关 Winsock 发送缓冲区行为的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
214397 Winsock 设计问题 - 通过 TCP 发送小数据段
属性

文章 ID:329781 - 上次审阅时间:01/30/2008 22:27:00 - 修订版本: 4.0

  • Microsoft Internet Explorer 5.5
  • Microsoft Internet Explorer 5.5
  • Microsoft Internet Explorer 5.5
  • Microsoft Internet Explorer 5.5
  • Microsoft Internet Explorer 5.01
  • Microsoft Internet Explorer 6.0
  • kbprb KB329781
反馈