2017-10-23 1 views
4

웹 사이트에서 정보를 가져 오는 앱을 만들 때이 웹 사이트는 데이터가 포함 된 텍스트 한 줄을 반환합니다. 이것을 얻으려면 나는 단지 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 시간은 짧아야합니다.

+0

http 서버에 연결될 때 http 헤더를 사용하여 클라이언트와 서버간에 발생하는 협상이 공통 통신 모드를 얻습니다. 예를 들어 서버가 불어로 기본 설정되어 있고 클라이언트가 영어를 원할 수 있습니다. 그런 다음 서버는 URL을 다른 웹 페이지로 전달하므로 시간이 걸릴 수 있습니다. 또한 첫 번째 연결에서 쿠키를 설정 한 다음 후속 연결에서 쿠키를 사용하므로 쿠키를 사용하는 응답이 쿠키가없는 초기 연결보다 빠릅니다. – jdweng

답변

0

문제는 Ipv6가 계속 해결되었다. http://www.hostame.domian/file에 대한 요청을 수행하는 대신 이제 http://xxx.xxx.xxx.xxx/file을 수행 중이므로 Ipv4 주소로 직접 이동합니다.

짧은 생체 질문의 종류이지만, 누군가 동일한 문제가있는 경우 도움이되기를 바랍니다.

관련 문제