HTTP File Upload Operation Takes a Long Time to Complete (329781)



The information in this article applies to:

  • 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

This article was previously published under Q329781
IMPORTANT: This article contains information about modifying the registry. Before you modify the registry, make sure to back it up and make sure that you understand how to restore the registry if a problem occurs. For information about how to back up, restore, and edit the registry, click the following article number to view the article in the Microsoft Knowledge Base:

256986 Description of the Microsoft Windows Registry

SYMPTOMS

When you use the HTTP File Upload feature to upload multi-megabyte files, the upload operation may take a very long time to complete.

Note This issue is documented in Request For Comment (RFC) 1867, "Form-based File Upload in HTML."

CAUSE

This issue occurs because the default Winsock Send buffer is 8 kilobytes (KB), and therefore Internet Explorer supplies the data in 8 KB chunks. On an average network, this equals approximately 80 KB per second (KBps), regardless of network bandwidth.

For additional information, click the article number below to view the article in the Microsoft Knowledge Base:

214397 INFO: Design Issues - Sending Small Data Segments Over TCP w/Winsock

RESOLUTION

To resolve this issue, configure Internet Explorer to increase the Send buffer when communicating with Winsock. This increases network performance when you use the HTTP File Upload method. To do this, follow these steps.

WARNING: If you use Registry Editor incorrectly, you may cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that you can solve problems that result from using Registry Editor incorrectly. Use Registry Editor at your own risk.
  1. Start Registry Editor (Regedt32.exe).
  2. Locate and then click the following registry key:

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings

  3. On the Edit menu, click Add Value, and then add the following registry value:

    Value name: SocketSendBufferLength
    Data type: REG_DWORD
    Radix: Decimal
    Value data: Buffer size that you want (in bytes)

    Buffer size value options:

    16-KB Buffer = 16384
    24-KB Buffer = 24576
    32-KB Buffer = 32768
    40-KB Buffer = 40960
    48-KB Buffer = 49152
    56-KB Buffer = 57344
    64-KB Buffer = 65536

  4. Quit Registry Editor.
Make sure that you test each value, starting with a 16-KB buffer. When the upload performance becomes acceptable, select the corresponding buffer value.

STATUS

This behavior is by design.

MORE INFORMATION

When you use the procedure described in the "Resolution" section of this article, any program that uses the WININETAPI HTTPSendRequest function (as documented on the following Microsoft Developer Network (MSDN) Web site) will allocate and request a Winsock Send buffer, as defined by the registry key.

For additional information about the HTTPSendRequest function, visit the following MSDN Web site: For additional information about Winsock Send Buffer behavior, click the article number below to view the article in the Microsoft Knowledge Base:

214397 INFO: Design Issues - Sending Data Segments Over TCP w/Winsock


Modification Type:MinorLast Reviewed:6/30/2005
Keywords:kbprb KB329781