레일에서는 일반적으로 뷰 (또는 헬퍼)에서 일부 쿼리가 실행되는 경우가 있습니다. 예를 들어 내 페이지에 선택 상자를 추가하려면 다음과 같이 작성하십시오.레일 뷰에서 쿼리를 사용하면 성능에 미치는 영향
<%= collection_select(:person, :city_id, City.all, :id, :name) %>
이 예제는 Rails Guides에서 가져온 것입니다. 여기에서는 인스턴스 변수 대신 "City.all"을 사용했습니다. 제 질문은 이것이 내 응용 프로그램의 성능에 어떤 영향을 미칠까요?
같은 일을하는 다음과 같은 좋은 방법이 있습니까? 그리고 왜? 뷰에서
@cities = City.all
그리고 : 컨트롤러에서
<%= collection_select(:person, :city_id, @cities, :id, :name) %>
왜 그런지 설명해 주시겠습니까? – Vignesh
ActionView 인스턴스는 요청이 전송되는 즉시 즉시 초기화됩니다. 모든 변수는 메소드가 실행될 때 동시에 초기화됩니다. 따라서 런타임에는 경제가 있습니다. 그러나 내부에 무언가 무거운 템플릿이 있으면 모든 작업이 일관되고 렌더링은 응답 본문을 생성하는 데 더 많은 시간을 소비합니다. 무거운 쿼리로 몇 번 테스트 해봤는데 응답 시간의 차이가 명백합니다 (2-3 배 느림). –