2013-01-23 5 views
2

나는 몇 달이 지난 이래로 ruby on rails 애플리케이션을 개발 해왔다. 기본 WEBrick 서버를 사용하여 응용 프로그램을 실행합니다. 그리고 내가 developmentproduction 모드로 WEBrick 서버를 시작하면 서버가 development mode보다 production mode의 속도가 더 빠릅니다.
왜 WEBrick 서버가 개발 모드가 아닌 생산 모드에서 더 빠릅니까? + 레일

특별한 이유가 있습니까? 아무도 나를 설명 할 수 있니?

답변

3

프로덕션 모드에서 서버는 캐시에 코드를로드하므로 작업이 빨라집니다. 그러나 개발 모드에서는 그렇지 않습니다. 변경을 수행 할 때마다 webrick을 다시 시작하지 않으려 고합니다. 모든 요청은 약간의 시간이 소요되는 해당 코드를 다시로드합니다.

그리고 가장 중요한 것은 자산 파이프 라인입니다. 프로덕션에서는 아마도 하나 또는 두 개의 요청으로 애셋 (javascript 및 css)의 컴파일 된 버전을 얻을 수 있습니다. 개발 중에는 디버깅 목적으로 (환경 설정을 기반으로) 분할 된 것을 얻을 수 있습니다. 그리고 브라우저가 모든 요청을 동시에 처리하지 않기 때문에 일부 애셋은 다른 애셋이로드 된 후에로드됩니다. 예를 들어 다음을 통해이 동작을 볼 수 있습니다. firebug의 네트워크 콘솔. 즉, 애셋이 많을수록 개발 모드에서 페이지로드 시간이 길어집니다.

3

dev 모드에서는 클래스가 캐시되지 않으므로 레일스는 새로 고칠 때마다 모든 클래스를 다시로드합니다. 또한 자산 컴파일은 개발 중에 (기본적으로) 수행되지 않으므로 새로 고칠 때마다 Rails가 모든 자산 (CSS, Javascript 등)을 다시로드합니다.

+0

속도 응답에 감사드립니다. – VenkatK

1

차이점은 2 가지 환경 사이입니다. Rails에는 몇 가지 환경이 있습니다. 각각은 자신 만의 데이터베이스 설정과 Rails 옵션을 가지고있다.

Rails.env 변수를 사용하여 특정 환경에서 일부 다른 변경을 수행 할 수 있습니다.

기본적으로 개발 환경에는 모든 캐시가 없으며 자동 다시로드가 활성화됩니다. 프로덕션 환경에는 모든 캐시가 있습니다.

하지만 원한다면 제작과 같은 개발 환경이나 개발 환경과 같은 제작 환경을 만들 수 있습니다.

새 환경을 추가 할 수도 있습니다. 당신이 허드슨 환경을 조성하고자 가정

:

새로운 환경 만들기.

Create a new environment file in config/environments/hudson.rb. 

기존 구성을 복제하여 시작할 수 있습니다 (예 : config/environments/test.rb). 환경에 맞게 config/database.yml에 새 구성 블록을 추가하십시오. 그게 전부입니다.

이제 서버에게

실행 콘솔

루비 스크립트/서버 허드슨

등등

루비 스크립트/서버 -e의 허드슨

를 시작할 수 있습니다.

+0

새로운 환경이란 무엇입니까? – VenkatK

+0

@VenkatK. 안녕하세요 새로운 환경을 만드는 내 대답을 업데이 트 .. – vijikumar

+0

대단히 감사합니다 viji. 너의 대답은 나를 그렇게 분명하게 만들었다. 다시 한번 감사드립니다. – VenkatK