2011-05-07 5 views
1

나는 원격 링크 목록이 있습니다. 하나를 클릭하면 두 개의 div가 각각 자체 부분으로 업데이트됩니다. div의 교체되어야하는레일 AJAX 명령에서 심각한 지연

_printing.html.erb

<%= link_to printing.name, printing, :remote => true %> 

장 복사/show.js.erb

jQuery('#render').html("<%= escape_javascript(render "render",:printing=>@printing) %>"); 
jQuery('#info').html("<%= escape_javascript(render "info",:printing=>@printing) %>"); 

링크를 클릭하면, 그 동안 걸린다. 이 예는 교체되기까지 15 초가 걸렸습니다. 시계로 시간을 잰거야. 그러나 로그는 다른 이야기를 말해줍니다.

Rendered printings/_render.html.erb (22.7ms) 
Rendered printings/_info.html.erb (39.7ms) 
Rendered printings/show.js.erb (73.6ms) 
Completed 200 OK in 978ms (Views: 457.7ms | ActiveRecord: 40.6ms) 

그래서 두 가지 경우에 심각한 지연이 있습니다. 첫 번째 이유는 위의 값의 합이 왜 그렇게 큰가요? 두 번째 이유는 15 초를 기다리는 이유는 무엇입니까? 로그에 1 초도 채 걸리지 않는다고 알려줍니다.

+1

html()에 밀린 내용은 무엇입니까? 얼마나 많은 데이터가 있습니까? 유효한 HTML입니까? 그게 문제가 아닌 서버가 파일을 생성하는 곳입니다. – epascarello

+1

파이어 버그 (Firebug) 나 비슷한 도구가 당신에게 알려주는 것을보세요. 어쩌면 서버 측에서 문제가되지 않을 수도 있습니다. –

답변

0

여기에는 여러 가지 가능성이 있습니다. 지연 시간 문제 (Firebug 또는 Safari/Chrome 검사기 도구에서 표시됨), 이벤트 루프 속도가 느려지는 자바 스크립트의 일부 문제 일 수 있습니다 (가능성은 낮지 만 가능하지만 JS 디버거에서 코드를 단계별로 수행 할 수 있음).), 또는 웹 서버의 성능 때문일 수 있습니다. 1 초의 응답 시간은 빠르지 않으며 로그보기는 이야기의 일부만을 알려줍니다. 요청에 소요 된 시간 (표시됨) 외에도 큐의 다른 요청에 의해 요청이 상당히 지연 될 수 있습니다. 개발 모드는 단일 프로세스 서버를 실행하므로 각 요청이 정렬되어 처리되어야합니다. Webrick을 사용 중이라면 성능면에서 모든 배팅이 해제되지만, mongrel 또는 thin을 설치하면 해결하기 쉽습니다.

앱의 성능을 더 잘 확인하려면 앱의 시간을 볼 수있는 매우 포괄적 인 개발 모드보기를 제공하는 newrelic gem을 설치하십시오.

0

응답 시간의 차이는 gzip으로 압축 된 AJAX 요청의 압축을 느리게하는 브라우저와 관련이있을 수 있습니다.

이러한 ajax 요청에 대한 압축 해제 테스트를 고려하십시오. 자세한 내용은 http://public.ok2life.com/welcome/index/86을 참조하십시오.

관련 문제