Η λειτουργία αποστολής αρχείου HTTP διαρκεί πολλή ώρα για να ολοκληρωθεί

Συμπτώματα

Όταν χρησιμοποιείτε τη δυνατότητα Αποστολή αρχείου HTTP για την αποστολή αρχείων πολλών megabyte, η λειτουργία αποστολής μπορεί να διαρκέσει πολύ χρόνο για να ολοκληρωθεί.

Σημείωση Αυτό το ζήτημα τεκμηριώνεται στο Request For Comment (RFC) 1867, "με βάση τη φόρμα Αποστολή αρχείου σε μορφή HTML."

Αιτία

Αυτό το ζήτημα παρουσιάζεται επειδή η προεπιλεγμένη buffer Winsock αποστολής είναι 8 kilobyte (KB) και, επομένως, ο Internet Explorer παρέχει τα δεδομένα στην chunks 8 KB. Ένα μέσο δικτύου, αυτό ισούται με περίπου 80 KB ανά δευτερόλεπτο (KBps), ανεξάρτητα από το εύρος ζώνης δικτύου.

Για πρόσθετες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

214397 ΠΛΗΡΟΦΟΡΙΕΣ: Σχεδίαση θέματα - Αποστολή τμημάτων αγοράς πεζό δεδομένων μέσω TCP w/Winsock

Προτεινόμενη αντιμετώπιση

Για να επιλύσετε αυτό το ζήτημα, ρυθμίστε τις παραμέτρους του Internet Explorer για να αυξήσετε το buffer αποστολής κατά την επικοινωνία με το Winsock. Αυτό αυξάνει την απόδοση του δικτύου, όταν χρησιμοποιείτε τη μέθοδο Αποστολή αρχείου HTTP. Για να γίνει αυτό, ακολουθήστε τα εξής βήματα.

Σημαντικό Αυτή η ενότητα, μέθοδος ή εργασία περιέχει βήματα που σας καθοδηγούν να τροποποιήσετε το μητρώο. Ωστόσο, ενδέχεται να προκύψουν σοβαρά προβλήματα εάν δεν τροποποιήσετε σωστά το μητρώο. Επομένως, βεβαιωθείτε ότι ακολουθείτε προσεκτικά αυτά τα βήματα. Για επιπλέον προστασία, δημιουργήστε αντίγραφα ασφαλείας του μητρώου πριν να το τροποποιήσετε. Στη συνέχεια, μπορείτε να επαναφέρετε το μητρώο εάν προκύψει κάποιο ζήτημα. Για περισσότερες πληροφορίες σχετικά με τον τρόπο δημιουργίας αντιγράφων ασφαλείας και επαναφοράς του μητρώου, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
322756 Τρόπος δημιουργίας αντιγράφων ασφαλείας και επαναφοράς του μητρώου στα Windows
  1. Ξεκινήστε τον Επεξεργαστή μητρώου (Regedt32.exe).
  2. Εντοπίστε και, στη συνέχεια, κάντε κλικ στο ακόλουθο κλειδί μητρώου:
    Ρυθμίσεις HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
  3. Στο μενού Επεξεργασία , κάντε κλικ στην επιλογή Προσθήκη τιμήςκαι, στη συνέχεια, προσθέστε την ακόλουθη τιμή μητρώου:
    Όνομα τιμής: SocketSendBufferLength
    Τύπος δεδομένων: REG_DWORD
    Βάση: δεκαδικών
    Δεδομένα τιμής: Buffer μεγέθους που θέλετε (σε byte)
    Επιλογές τιμή μεγέθους buffer:

    Buffer 16 KB = 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
    ΣημείωσηΜεγέθη τα buffer που είναι μεγαλύτερα από εκείνα που καθορίζονται εδώ δεν υποστηρίζονται από τη Microsoft.
  4. Κλείστε τον Επεξεργαστή μητρώου.
Βεβαιωθείτε ότι ελέγχετε κάθε τιμή, ξεκινώντας με ένα buffer 16 KB. Όταν γίνεται αποδεκτή η αποστολή, επιλέξτε την αντίστοιχη τιμή του buffer.

Κατάσταση

Αυτή η συμπεριφορά οφείλεται στη σχεδίαση.

Περισσότερες πληροφορίες

Όταν χρησιμοποιείτε τη διαδικασία που περιγράφεται στην ενότητα "Προτεινόμενη αντιμετώπιση" αυτού του άρθρου, οποιοδήποτε πρόγραμμα που χρησιμοποιεί τη συνάρτηση WININETAPI HTTPSendRequest (όπως τεκμηριώνεται στην ακόλουθη τοποθεσία Web Microsoft Developer Network (MSDN)) θα δεσμεύσετε και να ζητήσετε ένα buffer Winsock αποστολής, όπως ορίζεται από το κλειδί μητρώου.

Για πρόσθετες πληροφορίες σχετικά με τη συνάρτηση HTTPSendRequest , επισκεφθείτε την ακόλουθη τοποθεσία MSDN στο Web:

Για πρόσθετες πληροφορίες σχετικά με τη συμπεριφορά του Buffer αποστολή Winsock, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

214397 ΠΛΗΡΟΦΟΡΙΕΣ: Σχεδίαση θέματα - αποστολή τμήματα δεδομένων μέσω TCP w/Winsock
Ιδιότητες

Αναγνωριστικό άρθρου: 329781 - Τελευταία αναθεώρηση: 17 Ιαν 2017 - Αναθεώρηση: 1

Σχόλια