2007年7月1日 星期日

HTTP 檔案上載作業花費很長時間才能完成







文章編號 : 329781
上次校閱 : 2007年3月5日
版次 : 3.4
重要:本文包含有關修改登錄的相關資訊。修改登錄之前,請務必將它備份起來,並瞭解如何在發生問題時還原登錄。如需有關如何備份、還原和編輯登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
256986 (http://support.microsoft.com/kb/256986/) Microsoft Windows 登錄說明
徵狀
當您使用 HTTP 檔案上載功能上載多個 MB 大小的檔案時,上載作業可能要花費很長時間才能完成。

注意 這個問題已記載於「要求建議」(RFC) 1867 的「使用 HTML 的表單檔案上載」(Form-based File Upload in HTML) 中。
回此頁最上方

發生的原因
之所以發生這個問題,是因為預設的 Winsock「傳送」緩衝區為 8 KB,因此 Internet Explorer 會以 8 KB 的區塊提供資料。在一般網路上,不論網路頻寬為何,這等於每秒約 80 KB (KBps) 的傳送速度。

如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
214397 (http://support.microsoft.com/kb/214397/) Design issues - Sending small data segments over TCP with Winsock
回此頁最上方

解決方案
如果要解決這個問題,請設定 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 (http://msdn2.microsoft.com/en-us/library/aa384247.aspx)
如需有關 Winsock「傳送」緩衝區行為的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
214397 (http://support.microsoft.com/kb/214397/) Design issues - Sending small data segments over TCP with Winsock
回此頁最上方
相關網址:http://support.microsoft.com/kb/329781/zh-twhttp://support.microsoft.com/kb/329781/zh-tw

沒有留言:

張貼留言