내 컨트롤러이있다 : 프로덕션 환경에서ActiveRecord 캐시가 요청 사이에서 (: 전체)를 찾는 이유는 무엇입니까?
def frontpage
@sections = Section.all
end
는, 쿼리가 요청 사이에 캐시 할 것으로 보인다. 앱을 다시 시작할 때까지 @sections
은 항상 같습니다. 왜 그리고 어떻게 해결할 수 있습니까? Postgres를 프로덕션에서 사용합니다. 이유가있을 수 있습니까?
내 컨트롤러이있다 : 프로덕션 환경에서ActiveRecord 캐시가 요청 사이에서 (: 전체)를 찾는 이유는 무엇입니까?
def frontpage
@sections = Section.all
end
는, 쿼리가 요청 사이에 캐시 할 것으로 보인다. 앱을 다시 시작할 때까지 @sections
은 항상 같습니다. 왜 그리고 어떻게 해결할 수 있습니까? Postgres를 프로덕션에서 사용합니다. 이유가있을 수 있습니까?
프로덕션 환경에서 어딘가에 캐싱을 사용 가능하게 설정했다고 생각합니다. 내가 왜 말할 수 아니에요 동안, 나는 당신에게 솔루션을 제공 할 수 있습니다 :
def frontpage
uncached do
@sections = find(:all)
end
end
은 적어도이 트릭을해야을
전자 : 이것의 장점은, 그것은 단지에 영향을 미치는 것입니다 블록 안의 코드. 다른 모든 것은 여전히 캐시되어야합니다.
작업 자체가 캐싱되면 작동하지 않습니다. –
쿼리는 요청간에 캐시되지 않지만 작업은 될 수 있습니다. 컨트롤러에 cache_action
또는 다른 캐싱 메커니즘이 정의되어 있습니까?
편집 :
def frontpage
return render :text => Time.now.to_s
...
end
을 그리고 그것은 변경을 참조하십시오이 캐시되는 것 액션 있는지 알아 내기 위해, 당신의 행동에 넣고.
관련 질문에서 this answer을 확인하십시오. 구성이 캐시되도록 설정되어 있다면, 적어도 스위치를 켜야합니다. 그렇지 않으면 특정 페이지의 캐시를 무효화하려면 컨트롤러에서 수행 할 수있는 방법을 정의 할 수 있습니다.
private
def invalidate_cache
Rails.cache.delete("/sections")
end
당신이 호출 할 때 지정해야하지만 트릭을 할 것입니다.
어떻게 쿼리가 캐시 된 것으로 판단합니까? –