Việc chậm trễ lần đầu tiên có thể là do sự kết hợp giữa các nội dung sau:
- Thời gian để giải quyết các máy chủ DNS nhập
- Thời gian để tải xuống mã số tự động định cấu hình, biên dịch và thực hiện để xác định hiệu quả Proxy
- độ trễ mạng từ ứng dụng của bạn đến máy chủ proxy (nếu có một máy chủ proxy trong môi trường của bạn)
- độ trễ mạng từ máy chủ proxy để máy chủ đích thực sự.
- Độ trễ trên máy chủ để phân phối tài liệu XML . Nếu nó phải đi qua một biểu tượng đối tượng trong bộ nhớ và tạo tài liệu XML, thì có thể mất chút thời gian. Ngoài ra, nếu nó là sử dụng các kỹ thuật như XML Serialization để tạo ra các tài liệu , sau đó tùy thuộc vào cách serializer được cấu hình, các cuộc gọi đầu tiên để serialize/deserialize luôn mất một thời gian dài, do thực tế rằng một bộ phận trung gian cần để được tạo và biên dịch.
- Phân tích cú pháp XML ở phía máy khách có thể mất thời gian, đặc biệt nếu cấu trúc tài liệu XML rất phức tạp.
- Nếu XLinq (như XMLSerializer) tạo lắp ráp tạm thời cho XML phân tích & truy vấn, sau đó các yêu cầu đầu tiên sẽ mất thời gian nhiều hơn những người tiếp theo.
Để tìm ra một phần là dành thời gian, chèn một số thời gian đăng nhập vào mã của bạn sử dụng System.Diagnostics.Stopwatch():
// this is the time to get the XML doc from the server, including the time to resolve DNS, get proxy etc.
System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
timer.Start();
HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
timer.Stop();
Console.WriteLine("XML download took: " + timer.ElapsedMilliseconds);
timer.Start();
// now, do your XLinq stuff here...
timer.Stop();
Console.WriteLine("XLinq took: " + timer.ElapsedMilliseconds);
Bạn có thể chèn một vòng xung quanh này, và xem những gì sự khác biệt cho các thành phần khác nhau giữa yêu cầu đầu tiên và các yêu cầu tiếp theo là.
Nếu bạn thấy rằng sự khác biệt trong quá trình tải xuống và không phải là truy vấn, thì bạn có thể điều tra thêm bằng cách sử dụng tính năng dò tìm mạng bằng cách sử dụng Wireshark.
Hy vọng điều này sẽ hữu ích.
Sự chậm trễ chỉ lần đầu tiên truy cập trang web phân phát XML - tức là, trên lần truy cập tiếp theo có truy xuất nhanh XML không? Nếu nó có thể là thời gian khởi động ban đầu của ứng dụng web phục vụ XML ... –
Điều đó cũng xảy ra với máy chủ cập nhật của tôi trong khi tôi đang kiểm tra các bản cập nhật, tôi cũng đã thử kết nối với http://google.com và nó vẫn làm điều tương tự. Cùng một kết quả với một WebClient thay vì một HttpWebRequest cũng. – Christian
Ồ, đồng thời, khi tôi kết nối với BẤT CỨ máy chủ, tất cả các máy chủ khác đều tải nhanh. – Christian