Det tager lang tid at fuldføre HTTP-filsendingshandling

VIGTIGT! Denne artikel indeholder oplysninger om redigering af registreringsdatabasen. Inden du redigerer registreringsdatabasen, skal du tage en sikkerhedskopi af den, og du skal være klar over, hvordan du kan gendanne den, hvis der opstår problemer. Oplysninger om, hvordan du sikkerhedskopierer, gendanner og redigerer registreringsdatabasen, finder du ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:
256986 Beskrivelse af Microsoft Windows-registreringsdatabasen

Symptomer

Når du bruger funktionen for HTTP-filsending til at sende filer bestående af mange megabyte, kan det tage meget lang tid at fuldføre handlingen.

Bemærk! Dette problem er dokumenteret i RFC (Request For Comment) 1867, "Form-based File Upload in HTML".

Årsag

Problemet opstår, fordi Winsock send-standardbufferen er 8 KB, og Internet Explorer leverer derfor dataene i klumper af 8 KB. På et gennemsnitsnetværk er dette lig med ca. 80 KB pr. sekund (KBps), uanset netværksbåndbredden.

Yderligere oplysninger finder du ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:

214397 INFO: Designproblemer – Afsendelse af små datasegmenter via TCP w/Winsock (artiklen er evt. på engelsk)

Løsning

Løs dette problem ved at konfigurere Internet Explorer for at forøge send-bufferen, når der kommunikeres med Winsock. Dette forbedrer netværkets ydeevne, når du bruger metoden til HTTP-filsending. Det gør du ved at udføre følgende trin.

ADVARSEL! Hvis du bruger registreringseditoren forkert, kan der opstå alvorlige problemer, der bevirker, at du skal geninstallere operativsystemet. Microsoft kan ikke garantere, at problemer, der skyldes forkert brug af registreringseditoren, kan løses. Brug af registreringseditoren sker på egen risiko.
  1. Start registreringseditoren (Regedt32.exe).
  2. Find og klik på følgende nøgle i registreringsdatabasen:
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
  3. Klik på Tilføj værdi i menuen Rediger, og tilføj derefter følgende registreringsdatabaseværdi:
    Værdinavn: SocketSendBufferLength
    Datatype: REG_DWORD
    Radix: Decimal
    Værdidata: Bufferstørrelse efter ønske (i byte)
    Værdiindstillinger for bufferstørrelse:

    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. Afslut registreringseditoren.
Sørg for at teste hver enkelt værdi, og start med en 16-KB buffer. Når overførselspræstationen er acceptabel, skal du vælge den tilsvarende bufferværdi.

Status

Denne funktionsmåde er tilsigtet.

Yderligere Information

Når du bruger den procedure, der er beskrevet i afsnittet "Løsning" i denne artikel, vil ethvert program, som benytter WININETAPI-funktionen HTTPSendRequest (som beskrevet på følgende websted for MSDN (Microsoft Developer Network) allokere og anmode om en Winsock send-buffer som defineret af registreringsdatabasenøglen.

Yderligere oplysninger om funktionen HTTPSendRequest finder du på følgende websted for MSDN:

Yderligere oplysninger om Winsock send-bufferens funktionsmåde finder du ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:

214397 INFO: Designproblemer – Afsendelse af datasegmenter via TCP w/Winsock (artiklen er evt. på engelsk)
Egenskaber

Artikel-id: 329781 – Seneste udgave 28. jan. 2008 – Udgave 1

Feedback