2014-12-16 1 views
1

내 사이트의 탐색 메뉴가 바뀌기 때문에 내용이 자주 변경되지 않아 조각 캐싱에 적합합니다. 그러나 사용자가 로그인 한 경우 메뉴 막대의 일부에 사용자 이름이 표시되므로 맞춤 설정되어 캐시 할 수 없습니다.레일스 맞춤 설정을 통한 조각 캐싱

I 중 하나를 수행 할 수 있습니다

  1. 조각 캐시 정적 인 부분과 별도로 개인 부분을 제공합니다. 꽤 쉬워 보입니다.

  2. memcached 또는 CloudFront에서 많은 정보를 캐시하고 세션에 사용자의 이름을 유지하고 JavaScript를 사용하여 세션에서 사용자의 이름을 추출하고 클라이언트 쪽에서 페이지를 맞춤 설정합니다.

가장 좋은 옵션은 무엇입니까? 가능하면 유사한 상황에 대한 개인적인 경험을 토대로합니다.

답변

0

이 시도 :

##in user.rb to cache user 

after_save :invalidate_cache 

    def self.serialize_from_session(key, salt) 
    single_key = key.is_a?(Array) ? key.first : key 
    Rails.cache.fetch("user:#{single_key}") do 
     User.where(:id => single_key).entries.first 
    end 
    end 


    def invalidate_cache 
    Rails.cache.delete("user:#{id}") 
    end 

제공 : Rails Devise: How do I (mem)cache devise's database requests for the user object?

+0

감사와 DB를 타격, 문제의 일부를 해결하는 현재 사용자를 필요로하는 모든 페이지 요청에 '사용자 등 SELECT * FROM' . 그러나 대부분 정적 인 페이지가있는 문제는 해결되지 않으며 로그인 한 사용자에게 개인화 된 일부만 있습니다. –