2011-11-22 3 views
2

레일 응용 프로그램에서 캐싱을 사용하고 있지만 특정 요청에 대한 캐싱을 해제하거나 프로덕션 환경에서 캐싱 된 데이터를 재생성 할 수있는 시간이 있습니다. . 디버깅을 위해이 작업을 수행하고 싶지만 성능 차이가 무엇인지 알아야합니다.특수 매개 변수가있는 레일 캐시 사용 불가능 및 새로 고침

  1. 내 코드를 통해이 같은 일을 추가하지 않고 전반적으로 (& 캐시 = 거짓처럼 뭔가) 캐싱을 해제 할 수있는 방법이 있나요 :

    <% cache(x) unless params[:cache] == "false" do %> 
    
  2. 알 수있는 방법이 있나요 페이지를 렌더링 할 때 캐싱 된 모든 요소를 ​​무효화하고 다시 생성하는 레일? 이 일 것이다, 그러나 다시, 나는 사방을해야 할 것 :

    <% Rails.cache.delete <key> if params[:clear_cache] == "true" %> 
    

또는 난 그냥 이렇게해서는 안 왜 좋은 이유가있다.

답변

1

당신은 항상 당신이 대신 "캐시"의 사용 방법

def my_cache(x) 
    return x if params[:cache].blank? || params[:cache] == true 
    cache(x) 
end 

그것은 좀 덜 지저분 귀하의 의견에있을 거라고 ... 또는

, 당신 로 그를 쓸 수 (나는 짐작할 수있다) ActionController::Base의 내부 구조를 가지고 놀 수는 있지만 레일즈의 기본 코드에서 메타 해킹이 될 수있다.