2012-04-07 2 views
3

안녕하세요, 내가 Memcached가 내 Heroku가 응용 프로그램에 친절하게 잘 설정 가지고있다레일 3/Heroku가/Memcached가 - 미스/미스, 저장/신선한

. 그러나, 내가 올바르게 설정했는지 여부를 궁금하게 만드는 이상한 행동이 있습니다.

내 앱에서 페이지를 방문하면 (caches_page로 설정) 미스가 나서 놓치고 나서 신선한 상태가됩니다. 첫 번째 히트가 놓치거나 저장해야한다고 생각합니다 ...

이것은 내 뜻입니다. 처음 방문 :

2012-04-07T21:07:11+00:00 app[web.1]: Started GET "/help" for xx.xx.xx.xx at 2012-04-07 21:07:11 +0000 
2012-04-07T21:07:11+00:00 app[web.1]: cache: [GET /help] miss 

두 번째 방문 :

2012-04-07T21:07:16+00:00 app[web.1]: cache: [GET /help] miss, store 

세 번째 방문 :

2012-04-07T21:07:19+00:00 app[web.1]: cache: [GET /help] fresh 

나는이 실제로 문제가 있는지 확실하지 않습니다, 또는 내 메리에 대해 이동해야하는 경우 방법. 감사!

+0

레일 전문가가 아니지만 요청에 따라 보내는 HTTP 헤더를 확인해야합니다. 3 가지 요구 사항이 서로 다른 경우 첫 번째 실수가 왜 "놓치거나 저장"되지 않는지에 대한 단서가 될 수 있습니다. –

+0

내가 아는 한, Heroku는 실제로 페이지 캐싱을 지원하지 않습니다. expires_in 헤더와 함께 Rack :: Cache를 사용하거나 액션 캐싱을 사용해야합니다. Miss, miss/store, 신선한 것은 관련이 없습니다. – hurshagrawal

답변

0

캐싱과 관련하여 가장 먼저해야 할 일은 항상 응답 헤더를 검사하는 것입니다 (브라우저 dev 도구를 사용하여이 작업을 수행 할 수 있습니다).

내 생각에 랙 캐시에 응답을 캐시 할 수없는 것으로 처리하는 원인이되는 레일스 세션에 대한 쿠키 요청 헤더가 첫 번째 요청으로 반환됩니다. 후속 요청은 이미 세션이 있으므로 set-cookie를 반환하지 않으며 랙 캐시는 세션을 저장합니다. 세 번째 요청은 이전에 캐시 된 콘텐츠를 조회합니다.