1

나는 inherited_resource 플러그인을 사용하여 응용 프로그램을 빌드했으며 프로덕션 환경에 적용 할 준비가되었습니다.inherited_resources를 사용하여 캐싱

이제 동일한 응용 프로그램에 대해 캐싱을 구현하는 방법을 살펴 보았습니다. current_user에 의존하는 페이지의 일부분을 가지고 있기 때문에 프래그먼트 캐싱 메커니즘을 사용할 것입니다.

누가 내게 포인터 나 리소스를 제공 할 수 있습니까? inherited_resource 기반 뷰와 컨트롤러에 대한 조각 캐싱을 구현하는 데 도움이됩니까?

감사합니다, 아제 쿠마 G

답변

0

내가 inherited_resources를 사용하지 않는, 그러나 나의 이해는 컨트롤러 단지 지름길이다. 보기가 표준이어야하며,이 경우 레일스 가이드에 설명 된대로 조각 캐싱을 사용할 수 있습니다. http://guides.rubyonrails.org/caching_with_rails.html#fragment-caching

시도해 보셨습니까? 그것이 작동하지 않는다면 우리의 견해가 어떻게 보이는지 보여주십시오.


편집 : 주석에 대한 응답.

아, 일반적으로 조각 캐싱을 사용하는 경우 컨트롤러 동작을 호출하지 않는 것이 좋습니다. 변수를 설정하지 않았기 때문에 변수가 없으면 왜 그렇지 않은 것입니까? 페이지 캐싱 사용?

검색어가 실행되는 것을 방지하기 위해, arel이있는 ActiveRecord 3.0은 친구입니다. 예를 들어, @posts = Post.where (: published => true)를 액션에 넣으면 뷰에서 @ posts.each를 호출 할 때까지 호출되지 않습니다. 따라서 캐시 블록 안에 넣으면 절대 부르지 마라. inherited_resources가 기본적으로하는 것은 확실하지 않지만 José Valim이 작성한 것으로 가정 할 때 ActiveRecord 기능을 기본적으로 사용하게 될 것이라고 생각합니다. 그렇지 않다면 쉽게 사용자 지정할 수 있습니다. 개발 환경의 캐싱을 켜고 로그를보고 어떤 쿼리가 실행되는지 확인함으로써 테스트 할 수 있습니다.

+0

예,보기 캐싱을 위해 조각 캐싱을 사용하고 있습니다. 그러나 요청이 서버에 도달 할 때 컨트롤러 코드 (및 DB 쿼리)가 실행되는 것을 막을 수있는 방법은 없습니다. 내가 찾고있는 것은 캐싱을 기반으로 실행되는 inherited_resource 컨트롤러 코드를 중지 할 수있는 우아한 방법입니다. –

+0

이 주석에 응답하기 위해 응답을 업데이트했습니다. – gtd

+0

당신이 맞을 것 같네요. ARel이 여기에 핵심입니다. 내가 그것을 확인하면 나는 다시 게시 할 것이다. –