웹 사이트에서 정보를 가져 오는 앱을 만들 때이 웹 사이트는 데이터가 포함 된 텍스트 한 줄을 반환합니다. 이것을 얻으려면 나는 단지 WebClient.DownloadString()
을 사용하고 있습니다.첫 번째 요청시 웹 클라이언트가 느림
{
WebClient Client = new WebClient();
Client.Proxy = null;
return Client.DownloadString(url);
}
문제는 첫 번째 요청에이 과정이 항상 ~21.000ms
걸리는 다음 사람은 시간의 정상적인 금액을 가지고 있다는 것입니다 :이 코드입니다. 비슷한 질문이 있는데, pepole은이 문제를 해결하는 것처럼 보입니다. Client.Proxy = null;
줄을 추가했지만 문제가 해결되지 않습니다. 프록시 인터넷 설정이 사용 중지되었으며 방화벽이 아무 것도 차단하지 않습니다 (사용 중지 시도).
Google과 같은 다른 웹 사이트 (서버 문제가 아닌 것으로 테스트하기 위해)를 사용해 테스트했지만 결과는 같습니다. 또한 WebBrowser
컨트롤과 HttpWebRequest
을 사용해 보았지만 결과도 동일합니다.
동일한 페이지를로드하는 일반 브라우저 (테스트 된 가장자리, 파이어 폭스 및 크롬)에는 캐시가 지워진 후 200ms
이 걸립니다.
나는이있어 와이어 샤크를 사용하여,하지만 난 그것을 해석하는 방법을 모른다 : 파이어 폭스와
:
다음TCP:
1. SYN (client-server)
2. SYN (client-server)
3. SYN ACK (server-client)
4. ACK (client-server)
5. SYN ACK (server-client)
6. ACK (client-server)
HTTP:
5. GET (client-server)
TCP:
7. ACK (server-client)
HTTP:
5. RESPONSE 200 OK (server-client) (The correct response is received)
TCP:
7. ACK (client server)
내 프로그램 :
나는 똑같은 절차를 얻을 ,하지만 TCP를 통한 첫 번째 전송 패킷은 Ipv4 대신 Ipv6 주소를 사용하고 21 초 후에 나머지 패킷을 기다리고 실제 HTTP GET-RESPONSE 시간은 짧아야합니다.
http 서버에 연결될 때 http 헤더를 사용하여 클라이언트와 서버간에 발생하는 협상이 공통 통신 모드를 얻습니다. 예를 들어 서버가 불어로 기본 설정되어 있고 클라이언트가 영어를 원할 수 있습니다. 그런 다음 서버는 URL을 다른 웹 페이지로 전달하므로 시간이 걸릴 수 있습니다. 또한 첫 번째 연결에서 쿠키를 설정 한 다음 후속 연결에서 쿠키를 사용하므로 쿠키를 사용하는 응답이 쿠키가없는 초기 연결보다 빠릅니다. – jdweng