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

文章翻译 文章翻译
文章编号: 329781 - 查看本文应用于的产品
重要说明:本文包含有关修改注册表的信息。修改注册表之前,一定要先进行备份,并且一定要知道在发生问题时如何还原注册表。有关如何备份、还原和编辑注册表的信息,请单击下面的文章编号,以查看 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 网站:
http://msdn2.microsoft.com/en-us/library/aa384247.aspx
有关 Winsock 发送缓冲区行为的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
214397 Winsock 设计问题 - 通过 TCP 发送小数据段

属性

文章编号: 329781 - 最后修改: 2008年1月30日 - 修订: 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?当用于
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional
    • Microsoft Windows XP Media Center Edition
    • Microsoft Windows XP Tablet PC Edition
    • Microsoft Windows 2000 Advanced Server
    • Microsoft Windows 2000 Datacenter Server
    • Microsoft Windows 2000 Professional Edition
    • Microsoft Windows 2000 Server
    • Microsoft Windows NT Server 4.0 Standard Edition
    • Microsoft Windows NT Server 4.0, Terminal Server Edition
    • Microsoft Windows NT Workstation 4.0 Developer Edition
    • Microsoft Windows Millennium Edition
    • Microsoft Windows 98 Second Edition
关键字:?
kbprb KB329781
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com