2013-12-12 5 views
3

bullet gem을 추가하여 dev (Rails 4.0.2)의 N + 1 쿼리를 알려주었습니다 표시 할 모델의 부모 연결 두 개를로드하는 것이 좋습니다 모든 기록. '콘솔이 완료 아무튼 말합니다 후알림으로 열심히 부하를 추가 한 후 레일스 총알 보석이 느려짐

Completed 200 OK in 6741ms (Views: 2.1ms | ActiveRecord: 146.0ms) 

또한, 열망 로딩, 브라우저는 응답 :

Completed 200 OK in 5252ms (Views: 1.8ms | ActiveRecord: 114.1ms) 

열망 로딩 후 :

열망로드하기 전에 이들 중 하나는 협회에-속 시대에 맞게 업데이트되었습니다 (약 6 초). 서버 프로덕션에는 이러한 고정 문제가 없었지만이 경우에도 열심히로드하는 것은 나쁜 조언입니다.

열심히로드하는 것이 느려질 수 있습니다. 보기는 (eager loaded) 상위 레코드에 액세스합니다.

또한 글 머리 기호 젬은 어떤 이유로 호출 스택을 표시하지 않습니다.

답변

3

또한 열망하는로드로 콘솔은 콘솔이 완료되었다고 응답 한 후 (약 6 초) 업데이트되지 않습니다.

오늘 알게되었지만, 아마도이 문제를 일으키는 것은 총알 일 것입니다. 이는 브라우저가 페이지를 수신하기 전에 쿼리를 분석하고 분석해야하는 미들웨어를 삽입하기 때문입니다. 따라서 쿼리의 변화가 Bullet이 얼마나 빨리 수행하는지에 영향을 미칠 수 있습니다.

내 응용 프로그램 중 하나에서 불릿을 제거하여 느린 페이지 중 하나에서 추가 지연을 없애고 실제로보고 된 렌더링 시간을 1 초 단축했습니다.

비교할 때 Bullet을 사용하지 않도록 설정하십시오 (구성에서 또는 Gemfile에서 일시적으로 제거하고 bundle 실행). 여전히 가치있는 도구이지만 일부 앱의 경우 최적화를 시도 할 때 주기적으로 사용하도록 설정하는 것이 좋습니다.