Cache_fu 플러그 인 사용 방법

더 읽 기
 
Chris 는 게 임 스 팟 에서 일 했 었 다. 그 는 여기 서 게임 에 대해 이야기 했다.지난 1 년 간 당 에 서 는 수많은 젊은이 들 이 끊임없이 이 사 이 트 를 경신 하고 있 지만 이 사 이 트 는 여전히 강 세 를 보이 고 있다.그들 은 매일 50m 페이지 를 처리 해 야 하 며 다운 이 떨 어 지지 않 았 다.그들 은 Memcache 로 이 정 도 를 해 냈 다.
Memcache 는 분포 식 hash 로 Livesournal 에서 개발 되 었 습 니 다.
Memcache 를 선택 하 시 겠 습 니까?
Rails and Memcache
Fragments, Actions, Sessions, Objects 캐 시 를 사용 하면 다음 을 사용 할 수 있 습 니 다.
  • memcache-client (by Robot-coop guys/Eric Hodel). Marshal.unload is 40 times faster than Object.new/loading from the database.
  • CachedModel – integration with ActiveRecord
  • Fragment Cache Store
  • Memcache session store

  • ... 혹은...cache_fu
    혹은  acts_as_cached 2.0。 Objects, YAML (config/memcached.yml). : names. IPs, BIND .
  • get_cache
  • expire_cache

  • 당신 에 게 필요 한 것 은 이것 뿐 입 니 다. - 당신 은 set 를 사용 합 니 다.cache, 플러그 인 을 어떻게 바 꾸 는 지 잘 모 를 수도 있 습 니 다.after save 갈고리 에 캐 시 실효 메커니즘 을 사용 해 야 합 니 다.예 를 들 면:
    class 
    
    
    
    Presentation
    
    
    
     <
    
     ActiveRecord
    
    ::
    
    Base
    
    
      acts_as_cached
    
    
      after_save
    
     :expire_cache
    
    
    end
    
    
    
    
    
    
    

    또한:class Presentation < ActiveRecord :: Base
      acts_as_cached :conditions => ' published = 1 '
    end

    Cached - scoped - finders.이 용법 은 사용자 정의 find 방법 을 model 에 옮 긴 다음 캐 시 메커니즘, cache 를 포장 합 니 다.fu 플러그 인 은 AR:: Base 방법 을 통 해 이 기능 을 유기 적 으로 결합 합 니 다.
    class 
    
    
    
    Topic
    
    
    
     <
    
     ActiveRecord
    
    ::
    
    Base
    
    
      def 
    
    self.weekly_popular
    
    
        Topic
    
    .
    
    find
    
     :all
    
    ,
    
     ...
    
    
      end
    
    
    end
    
    
    
    Topic
    
    .
    
    cached
    
    (
    
    :weekly_popular
    
    )
    
    
    
    
    
    
    

    사용 alias_method_chain date :
    def 
    
    
    
    self.cache_key_with_date
    
    
    
    (
    
    
    
    id
    
    
    
    )
    
    
    
    
      ...
    
    
    end
    
    
    
    class 
    
    <<
    
     self
    
    
      alias_method_chain
    
     :cache_key
    
    ,
    
     :date
    
    
    end
    
    
    
    
    
    
    

    ID 로 캐 시 불 러 오기: Topic.find(1, 2, 3) Topic.get_cache(1, 2, 3), memcached, 。
    user_ids
    
    
    
     =
    
     @topic
    
    .
    
    posts
    
    .
    
    map
    
    (&
    
    :user_id
    
    ).
    
    uniq
    
    
    @users
    
     =
    
     User
    
    .
    
    get_cache
    
    (
    
    user_ids
    
    )
    
    
    
    
    
    
    

    캐 시 연결 도 가능 하기 때문에 memcache 를 통 해 연결 을 탐색 할 수 있 습 니 다.
    캐 시 다시 쓰기
    class 
    
    
    
    ApplicationController
    
    
    
     <
    
     ActionController
    
    ::
    
    Base
    
    
      before_filter
    
     :set_cache_override
    
    
      def 
    
    set_cache_override
    
    
        ActsAsCached
    
    .
    
    skip_cache_gets
    
     =
    
     !!
    
    params
    
    [
    
    :skip_cache
    
    ]
    
    
      end
    
    
    end
    
    
    
    
    
    
    

    reset_cache: 캐 시 리 셋 (이 부분 은 어떻게 번역 해 야 할 지 모 르 겠 습 니 다. reset_cache: 느 리 고, uncached operations can sometimes queue up and wedge a site. 대신, request 를 완료 할 때 cache resets 를 실행 합 니 다. expiring before. That way, requests that continue to pile up 은 리 빌 드 가 완 료 될 때 까지 cached copy 를 사용 합 니 다.)
    class 
    
    
    
    Presentation
    
    
    
     <
    
     ActiveRecord
    
    ::
    
    Base
    
    
      after_save
    
     :reset_cache
    
    
    end
    
    
    
    
    
    
    

    버 전: 코드 를 수정 한 후 캐 시 방식
    class 
    
    
    
    Presentation
    
    
    
     <
    
     ActiveRecord
    
    ::
    
    Base
    
    
      acts_as_cached
    
     :version
    
     =>
    
     1
    
    
    end
    
    
    
    
    
    
    

    배치: Chris 푸 시 키 는 Memcache 서버 의 효율 적 인 작업 을 위해 Monit 배 치 를 할 수 있 습 니 다.(번역자 주: 다른 서버 의 효율 이 어떤 지 모 르 겠 습 니 다)
    livketama: 캐 시 를 실효 성 없 이 Memcache 서버 를 재배 치 합 니 다.
    질문: 페이지 캐 싱?Nginx 는 rails 호스트 이외 의 로 컬 Memcache page caching 을 사용 합 니 다.
    후기: 본인 이 최근 에 cache 를 연구 하고 있 기 때 문 입 니 다.fu 플러그 인 사용 방법, 이 글 은 지속 적 으로 업 데 이 트 됩 니 다. 주목 하 시기 바 랍 니 다.이 플러그 인 에 대한 이 해 를 발표 하 는 것 을 환영 합 니 다.

    좋은 웹페이지 즐겨찾기