문제

저는 ASP.Net 2.0에서 (비교적 작은) 웹사이트를 개발 중입니다.또한 실행 파일을 제공하기 전에 프로젝트를 쉽게 조정하기 위해 nAnt를 사용하고 있습니다.현재 상태에서 웹사이트는 다음을 사용하여 "사전 컴파일"되어 있습니다.

aspnet_compiler.exe -nologo -v ${Appname} -u ${target}

IIS 풀이 다시 시작된 후(유휴 종료 또는 재활용 후) 응용 프로그램이 다시 온라인 상태가 되기까지 최대 20초가 소요됩니다(그리고 Application_start에 도달함).

Visual Studio 내에서 직접 디버깅할 때(시작하는 데 2초 소요) 동일한 문제가 발생하지 않으므로 aspnet_compiler가 정말 좋은 아이디어인지 궁금합니다.

MSDN에서 많은 것을 찾을 수 없었습니다.제작을 위해 웹사이트를 어떻게 컴파일합니까?

도움이 되었습니까?

해결책

다음 사항을 확인하세요.

  1. 웹 사이트 프로젝트가 아닌 웹 응용 프로그램 프로젝트를 사용하고 있습니다. 이로 인해 코드 숨김에 대해 미리 컴파일된 바이너리가 생성됩니다.
  2. web.config 파일에서 디버그 코드 생성을 해제했습니다. aspnet_compiler를 사용할 때와 다르면 코드가 다시 컴파일될 수 있습니다.

이를 시도해 본 적이 있다면 어셈블리에 대해 ngen을 실행하여 JIT 시간을 절약할 수 있습니까?

다른 팁

궁극적인 대응을 위해 앱이 종료되는 것을 허용하지 마세요.

첫 번째 방법은 믿을 수 없을 만큼 인기가 있어서 항상 누군가가 사용하고 있는지 확인하는 것입니다.

또는 예약된 활동으로 다른 곳에서 작은 연결 유지 페이지를 가져오는 것을 사용하여 사이트를 '핫'하게 유지할 수 있습니다.

웹 사이트가 업데이트 가능하도록 컴파일된 경우 가상 디렉터리에 여러 개의 .ASPX 파일이 표시됩니다.이는 시작 시 컴파일되어야 합니다.그러면 웹 UI 자체를 직접 변경할 수 있습니다.이는 웹사이트와 웹 애플리케이션 모두에 대한 기본값입니다.

web.config에 설정되어 있는지 확인하세요. <compilation debug=false>.내 경우에는 사용자에게 제공하기 전에 모든 기본 페이지에 대한 Get 요청을 발행하는 배치 파일도 있습니다(페이지 로딩 시뮬레이션).

핵심은 IIS 응용 프로그램 풀이 종료되지 않도록 하는 것입니다.코드가 실제로 호스팅되는 곳입니다.누군가가 하루에 한 번 귀하의 사이트를 방문하는 한 사이트가 종료되지 않도록 하려면 "유휴 시간 제한"(고급 설정에서)을 1440분(24시간)과 같이 매우 높은 값으로 설정하십시오.

새 코드를 배포할 때마다 또는 트래픽 없이 이 유휴 제한 시간이 초과되는 경우 JIT 시간이 계속 유지됩니다.

IIS 7.x 유휴 시간 제한 구성

@사이먼:

  • 프로젝트는 웹 애플리케이션입니다.그러면 웹 사이트 시작 속도가 느려집니다(다른 코드 구성 외에 이런 일이 발생하는지 전혀 몰랐습니다).
  • 확인했고 aspnet_compiler가 호출된 후 web.config를 편집하는 동안 디버그 값을 건드리지 않았습니다. (그러나 web.config를 건드리지 않으면 웹사이트가 시작하는 속도가 더 빠르지 않은지 확인하겠습니다. 확신하는)

(그리고 나는 확실히 ngen을 살펴볼 것입니다. 나는 그 도구를 몰랐습니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top