HTTP 文件上载操作需要很长时间才能完成
适用于
重要说明:本文包含有关修改注册表的信息。修改注册表之前,一定要备份注册表,并且一定要知道在发生问题时如何还原注册表。有关如何备份、还原和编辑注册表的信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 Description of the Microsoft Windows Registry
症状
当使用 HTTP 文件上载功能上载大小为几兆字节的文件时,上载操作需要很长时间才能完成。注意:此问题记录在 Request For Comment (RFC) 1867“Form-based File Upload in HTML”中。
原因
产生此问题的原因在于:默认的 Winsock 发送缓冲区大小为 8 KB,因而 Internet Explorer 以 8 KB 大小的块区提供数据。在一般的网络上,这相当于每秒约 80 KB (KBp)(不考虑网络带宽)。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
214397 INFO:Design Issues - Sending Small Data Segments Over TCP w/Winsock
解决方案
要解决这一问题,请配置 Internet Explorer,以增大与 Winsock 进行通信时的发送缓冲区。当您使用 HTTP 文件上载方法时,这可以改善网络性能。为此,请按照下列步骤操作。警告:注册表编辑器使用不当可造成严重问题,这些问题可能需要重新安装操作系统。Microsoft 不保证能够解决因为注册表编辑器使用不当而产生的问题。使用注册表编辑器需要您自担风险。
- 启动注册表编辑器 (Regedt32.exe)。
- 找到并单击下面的注册表项:
HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings
- 在编辑菜单上,单击添加值,然后添加下列注册表值:
数值名称:SocketSendBufferLength
缓冲区大小值选项:
数据类型:REG_DWORD
基数:十进制
值数据:所需的缓冲区大小(字节)16 KB 缓冲区 = 16384
24 KB 缓冲区 = 24576
32 KB 缓冲区 = 32768
40 KB 缓冲区 = 40960
48 KB 缓冲区 = 49152
56 KB 缓冲区 = 57344
64 KB 缓冲区 = 65536 - 退出注册表编辑器。
状态
这种行为是设计使然。更多信息
当您使用本文“解决办法”部分中描述的过程时,任何使用 WININETAPI HTTPSendRequest 函数(下列 Microsoft Developer Network (MSDN) Web 站点提供)的程序都将按注册表项的定义分配和请求 Winsock 发送缓冲区。有关 HTTPSendRequest 函数的其他信息,请访问下列 MSDN Web 站点:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/httpsendrequest.asp
有关 Winsock 发送缓冲区行为的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:214397 INFO:Design Issues - Sending Data Segments Over TCP w/Winsock
这篇文章中的信息适用于:
- Microsoft Internet Explorer version 6 for Windows XP
- Microsoft Internet Explorer version 6 for Windows 2000
- Microsoft Internet Explorer version 6 for Windows NT 4.0
- Microsoft Internet Explorer version 6 for Windows Millennium Edition
- Microsoft Internet Explorer version 6 for Windows 98 Second Edition
- Microsoft Internet Explorer 5.5 for Windows 2000
- Microsoft Internet Explorer 5.5 for Windows NT 4.0
- Microsoft Internet Explorer 5.5 for Windows Millennium Edition
- Microsoft Internet Explorer 5.5 for Windows 98 Second Edition
- Microsoft Internet Explorer 5.01 for Windows 2000
发表于 2004年7月20日 10:34