2010-08-20 6 views
0

내 응용 프로그램의 모든 페이지의 바닥 글에 배치 할 통계를 가져 오는 쿼리가 있습니다. 그래서 자연 나는 application.rb에 넣어 합니다만, 문제의 통계 rails 캐싱 for application.rb

은 기본적으로 바닥 글에서 말하는 것입니다 ... 일반적으로 하루 동안 변경되지 않습니다 : 현재

을, 46 개국, 75 개 도시, 20,000 개 도시가 있습니다.

하지만이 쿼리를 캐시에 저장하여 내 앱의 속도를 늦추지 않고 하루에 한 번만 업데이트하면됩니다. 어떻게하면 좋을까요?

@stat = Location.find(:all, :select => 'COUNT(locations.id) AS locations, COUNT(DISTINCT(city)) AS cities, COUNT(DISTINCT(countries.name)) AS countries', :joins => [ :places, :country ], :conditions => [ 'email IS NOT NULL' ]).first 

답변

0

시도 : 그 후

@stat ||= Location.find(:all, :select => 'COUNT(locations.id) AS locations, 
           COUNT(DISTINCT(city)) AS cities, 
           COUNT(DISTINCT(countries.name)) AS countries', 
           :joins => [ :places, :country ], 
           :conditions => [ 'email IS NOT NULL' ]).first 

, 시간 기준으로 @stat 변수를 무효화하거나이 같은 일부 다른 이벤트에 의해 :

@stat = nil 

당신은 또한에 의한 것을 달성 할 수 fragment caching을 사용하십시오.

+0

실제로 처음 시도했지만 컨트롤러를 통과하지 못하는 것 같습니다. 응용 프로그램 컨트롤러에서도 마찬가지입니다. 하지만 조각 캐시를했는데 제대로 작동하는 것 같습니다. 감사! – holden