Tôi gặp sự cố với Webclient.WebClient rất chậm
Nó rất chậm. Mất khoảng 3-5 giây để downloadString từ một trang web. Tôi không gặp bất kỳ sự cố mạng nào.
Đây là WebClient được sửa đổi của tôi.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
namespace StatusChecker
{
class WebClientEx: WebClient
{
public CookieContainer CookieContainer { get; private set; }
public WebClientEx()
{
CookieContainer = new CookieContainer();
ServicePointManager.Expect100Continue = false;
Encoding = System.Text.Encoding.UTF8;
WebRequest.DefaultWebProxy = null;
Proxy = null;
}
public void ClearCookies()
{
CookieContainer = new CookieContainer();
}
protected override WebRequest GetWebRequest(Uri address)
{
var request = base.GetWebRequest(address);
if (request is HttpWebRequest)
{
(request as HttpWebRequest).CookieContainer = CookieContainer;
}
return request;
}
}
}
UPDATE: Trong Wireshark tôi thấy rằng DownladString duy nhất được gửi và nhận vài ngàn gói tin.
WebClient không phải là đặc biệt chậm, vấn đề phải ở một nơi khác ... Có lẽ trang web bạn đang tải xuống chậm? –
Bạn nên thử sử dụng bộ ghi lưu lượng như WireShark để xác định xem sự chậm trễ có thực sự giữa các yêu cầu đơn lẻ và khung phản hồi (do sự chậm trễ của mạng/máy chủ) hay không xảy ra do mã máy khách đang hoạt động sai và gửi quá nhiều yêu cầu hoặc một số logic như vậy lỗi. –
Cũng thực thi nhiều lần tải xuống trong một vòng lặp để 'khởi động' quá trình (loại bỏ nạp các assembly chẳng hạn). –