2011-11-28 2 views
3

Winform 응용 프로그램에서 HttpWebRequest를 처음 만들 때 첫 번째 요청을 처리하는 데 10 ~ 30 초가 걸립니다. 후속 통화는 1 초도 걸리지 않습니다.Winform 응용 프로그램의 첫 번째 웹 요청이 느립니다.

enter image description here

을 : 나는 (내가 여기에 이미지를 업로드 ... 아직 없다) 두 개의 버튼과 2 텍스트 상자, 응용 프로그램의 이미지는 여기에서 찾을 수 있습니다 구성,이 예시 조금 POC 응용 프로그램을 작성

응용 코드는 매우 간단합니다 :

public partial class Form1 : Form 
{ 
    DateTime _start; 
    TimeSpan _span; 
    int _count = 0; 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     _count++; 
     _start = DateTime.Now; 
     HttpWebRequest _request = (HttpWebRequest)WebRequest.Create(textBox1.Text); ; 
     // Added after Conrad's response: 
     _request.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore); 
     HttpWebResponse _response = (HttpWebResponse)_request.GetResponse(); 
     _response.Close(); 
     _span = DateTime.Now - _start; 
     textBox2.Text += _count.ToString("000") + ": " + _span.ToString(@"mm\:ss\,fff") + "\r\n"; 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     textBox2.Text = ""; 
    } 
} 

는 왜 첫 번째 요청에서 너무 오래 걸립니까? 이 속도를 높이기 위해 할 수있는 일이 있습니까?

+0

는 공개 사이트 또는 로컬 자원의 일종에 대해 테스트를하고 있습니까? 브라우저에서로드하는 것과 속도가 어떻게 비교됩니까? 원격 서버가 유휴 상태의 일부 리소스를 스핀 업해야하기 때문에 히트가 아닐 수 있습니까? – Jason

+0

제이슨, 내가 사용하고있는 URL은 public (http://www.maxprocess.com.br/status.htm)입니다. 회사 사이트의 빠른 & 더티 html 페이지입니다 ( Ok). 브라우저 (IE 또는 FF)를 통해이 페이지에 액세스하면 예상대로 즉시로드됩니다. 래그는 내 WinForm 앱에만 있습니다. – tcbrazil

+0

프로파일 러를 통해 실행하여 모든 상황을 파악할 수 있는지 확인할 수 있습니다. – Jason

답변

1

그럼 처음에는 몇 가지가 있지만 기본적으로 첫 번째 히트를 위해 할 일이 많습니다. 가장자리를 돌아 다닐 수는 있지만 노력으로 얻을 수있는 가치는 의심 스럽습니다. 그것은 확실히 29 초가되지 않을 것입니다 ...

"빠른"접근법은 앱이 가능한 한 가장 먼저하는 것처럼 다른 스레드에서 요청을 버리는 것입니다.

+0

Tony, 합리적인 해결 방법이지만 WinForm 앱에이 동작이 필요한 이유를 알고 싶습니다. IE (Internet Explorer/FF)를 사용하는 브라우저에서 URL이 즉시로드되기 때문입니다. – tcbrazil

0

웹 서비스에서 IIS 설정처럼 들립니다. 첫 번째 요청 대기 시간을 줄이려면 auto-start을 시도하십시오.

2

미스터리가 해결되었습니다. 모든 사람들에게 감사드립니다. Fiddler2를 사용하여 (많은 감사, Bradley & Jason!), 내 노트북에 문제가 있는지 확인할 수있었습니다. 하나의 MS-Loopback & 하나의 버추얼 박스 (VirtualBox) 어댑터가 있습니다. PDA의 & VM과 테스트에 사용합니다. 둘 중 하나 또는 모두를 사용하도록 설정하면 앱이 연결에 필요한 게이트웨이를 결정하는 데 너무 오래 걸렸습니다. 두 논리 카드를 모두 비활성화하면 지연이 사라졌습니다.

내 브라우저 (IE/FF)가이 문제로 고생하지 않기 때문에 WinForm app/.Net에 이상한 점이 있다고 생각합니다. 어쩌면이 어댑터를 무시하도록. NET 또는 내 응용 프로그램을 조정할 수있는 방법이 있지만, 거의 완벽한 웹 기반 (웹 무식한)이기 때문에이 솔루션을 발견하게되어 기쁩니다.

+0

답변으로 표시하는 것을 잊지 마세요! :) –

관련 문제