2016-09-13 4 views
0

두 개의 웹 사이트, 하나의 클라이언트 웹 사이트 및 가격 WEBAPI 웹 사이트가 있습니다. 자주 사용률이 낮아서 일시 중지되므로 첫 번째 통화에서 초기화하는 데 시간이 걸립니다. 가격 책정 웹 사이트의 성능 문제가 있습니다. 그 직후에 요청을 반복하면 매우 빠릅니다.다른 사이트에서 웹 사이트 사전 초기화

클라이언트 웹 사이트의 특정 페이지에서 사용된다는 사실을 알고 있으므로 사용자 유효 요청이 나중에 나올 때 페이지가로드 될 때이 페이지를 불러올 수 있기를 바랍니다. 가격 WEBAPI 사이트는 클라이언트에서 사용할 수 없으므로 클라이언트 웹 사이트 만 서버 측에서 액세스 할 수 있습니다.

나는 이것에 대한 최선의 접근법을 모른다. 나는 클라이언트 웹 사이트의 성능에 영향을 미치기를 원하지 않는다. 1px x 1px iFrame이 페이지를 호출하는 것으로 간주했지만 페이지를 차단할 것이라고 우려했습니다. Ajax 호출이 더 적절하지만, 클라이언트 웹 사이트에서 무언가를 호출하여 웹 서비스를 호출하는 방법은 무엇입니까? 제가 고려하지 않은 더 나은 접근법이 있습니까?

답변

0

공유 호스팅 환경에서 알려진 문제는 해결 방법이지만 정상적으로 업그레이드하는 것이 좋습니다. 내 호스팅에는 DotNetNuke 옵션이 있습니다. 이는 기본적으로 서버에 메모리를 예약하고 비활성으로 인해 응용 프로그램 풀을 재활용하지 않음을 의미합니다. VPS와 비교하면 더 저렴합니다.

공유 호스팅이 아닌 경우 these IIS settings could help you입니다.

어쨌든, 다시 해결 과정 :

당신은 클라이언트가 webapi, 당신의 웹 사이트 캔의 백 엔드에 액세스 할 수 없습니다 말한다. WebAPI가 REST GET, POST 메소드를 제공하기 때문에 이상하게 보입니다. 어느 쪽이든 응답을 기다리지 않거나 자바 스크립트 호출을 API에 요청하지 않는 서버 측에서 webapi에 대한 비동기 호출을 수행 할 수 있습니다.

다음, 어딘가에 코드에서, 호출 될
public static async Task StartupWebapi() 
{ 
    string requestUrl = "http://yourwebapi.com/api/startup"; 

    using (var client = new HttpClient()) 
    { 
     //client.Timeout = new TimeSpan(0, 0, 20); timeout if needed 
     try 
     { 
      HttpResponseMessage response = await client.GetAsync(requestUrl); 
      if (response.IsSuccessStatusCode) 
      { 
       resultString = await response.Content.ReadAsStringAsync(); 
      } 
     } 

    } 
} 

적어도 클라이언트의 웹 사이트를 시작합니다

당신의 웹 사이트를 가정하면 ASP.NET입니다.

HostingEnvironment.QueueBackgroundWorkItem(ct => SomeClass.StartupWebapi()); 

또는 자바 스크립트에서 비동기 적으로 실행됩니다.

$.ajax({ 
    url: "http://yourwebapi.com/api/startup", 
    type: "GET", 
    success: function (response) { 
    }, 
    error: function (response) { 

    } 
}); 

는 다른 해결 방법에 대한 this question 참조하십시오.