programing

ASP.NET MVC - 느린 초기 로드

megabox 2023. 8. 27. 09:03
반응형

ASP.NET MVC - 느린 초기 로드

저는 최근에 asp.net mvc 웹 애플리케이션을 만들어 온라인에 게시했습니다.

웹 사이트를 처음 로드할 때 실제로 표시하는 데 약 10-15초가 걸린다는 것을 알 수 있지만, 한 번 클릭한 후에는 두 번째 라운드가 예상되는 만큼 빠르게 로드됩니다.웹사이트가 왜 이렇게 오래 걸리는지 아시는 분 계신가요?

일반적으로 응용프로그램 도메인이 시작되면 응용프로그램을 로드하는 데 항상 약간의 추가 시간이 걸립니다.

이 문제를 악화시키는 데 도움이 되는 것은 잘못 작성된 코드(IE: Application_Start)에서 사용 중인 특정 라이브러리(예: ORM)에 이르기까지 무엇이든 될 수 있습니다.몇 개의 모듈을 로드했습니까?

web 높은 웹.config를 합니다.<compilation debug="true">이는 운영 환경에서 상당한 성능 영향을 미칠 수 있습니다."false"로합니다.

"응용프로그램 시작 시간을 개선"하는 방향으로 검색하여 특정 응용프로그램과 관련이 있을 수 있는 항목을 찾는 것이 좋습니다.

첫 번째 댓글에서 업데이트:

30분 후에도 응용 프로그램이 계속해서 시작되는 경우(몇 초간 중단됨) IIS의 응용 프로그램 풀 재활용 설정과 관련이 있을 수 있습니다.

IIS 관리자로 이동합니다(v7+로 가정).

  1. 응용 프로그램 풀
  2. 응용 프로그램에 사용 중인 풀을 마우스 오른쪽 단추로 클릭합니다.
  3. "재활용"을 선택하면 "재활용 조건"이라는 레이블이 붙은 창이 나타납니다.
  4. 이러한 설정은 앱 풀을 자동으로 종료하고 다시 시작할 시기를 결정하므로 이러한 설정을 검사합니다.

일반적인 성능 측면에서 다음을 시도해 볼 수 있습니다.

  1. Application_Start() 메서드 또는 다른 해당 위치에서 경과된 시간을 뱉어내는 디버깅 문을 추가하여 가장 오래 걸리는 것을 파악합니다.
  2. 완전히 깨끗한 데모 프로젝트를 만들고 배포합니다.같은 문제를 겪고 있는지 확인합니다.속도 저하를 감지할 때까지 실제 코드를 점점 더 많이 도입하지 않는 경우.

만약 여러분이 정말로 당황한다면, 그것이 아마도 가장 느린 선택이 될지라도 2번이 여러분의 최선책일지도 모릅니다.

저는 또한 asp.net mvc 사이트를 느리게 처음 로드하는 것과 같은 문제를 겪었고, 마침내 첫 로드에서 매우 빠른 사이트를 로드하는 가장 좋은 방법을 찾았습니다.

내 솔루션은 윈도우즈 서버 2008 r2 및 IIS 7.5용이지만, 상위 윈도우즈 서버와 상위 IIS 버전에서도 몇 가지 간단한 차이점이 있습니다.

먼저 애플리케이션 풀의 시작 모드를 항상 실행 중으로 설정해야 합니다. 그러면 애플리케이션 풀이 잠시 후에 절전 모드로 전환되지 않습니다.(저의 경우단계를 수행하면 사이트의 첫 로드 시간이 45-55초에서 약 8-12초로 변경됩니다.

첫 번째 단계에서, 당신의 웹사이트에 대한 첫 번째 요청은 없습니다. 당신의 웹사이트를 사전 로드하기 위해, 우리는 다른 단계가 필요합니다. 즉, 여기서 iis7.5를 위한 애플리케이션 초기화 모듈을 설치하는 것입니다.

2단계에서 웹 사이트에 대해 preloadEnabled=true를 설정해야 합니다. 이 옵션은 응용 프로그램 초기화가 사이트 설정에 추가한 것입니다.

자세한 내용과 이러한 옵션을 설정하는 방법은 다음 블로그 게시물을 참조하십시오. http://blogs.iis.net/wadeh/application-initialization-part-2

2단계 후, 제 웹사이트는 1-3초 만에 로딩됩니다.

제이가 말한 것 외에도..앱 풀의 메모리 사용량을 고려해야 합니다.이는 공유 호스팅 환경의 경우 특히 그렇습니다. 공유 호스팅 환경에서는 공급자가 메모리 제한에 도달하면 일반적으로 애플리케이션 풀을 재활용합니다(시간 기반이 아니라).그러면 사이트가 다시 "다시 시작"되어 초기 로드 성능 문제가 발생합니다.

web.config 섹션의 주석 <system.codom> 첫 번째 로드는 8-14초에서 1초입니다.

웹 양식에서도 동일한 문제가 발생합니다.

  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
  </system.codedom>

회전하는 이미지가 조금 커 보입니다.브라우저에서 이 부분이 마지막으로 로드됩니다.페이지의 나머지 부분은 모두 상당히 빠르게 로딩됩니다.이러한 이미지의 크기를 조정할 수 있습니다.또한 큰 JavaScript 파일은 초기 로드 중에 속도가 느려질 수 있습니다.

구현할 수 있는 몇 가지 단계가 있습니다.

  1. 클라이언트 측 캐시
  2. 번들링 및 최소화
  3. 서버측 캐시
  4. IIS Manager를 사용하여 자동 시작 구성

언급URL : https://stackoverflow.com/questions/21150237/asp-net-mvc-slow-initial-load

반응형