2011-04-27 7 views
4

Ruby on Rails 3 앱에서 Memcached를 사용하고 있습니다. 액션과 프래그먼트 캐싱으로 잘 작동하지만, 페이지 캐싱을 사용하려고하면 페이지가 Memcached가 아닌 파일 시스템에 저장됩니다. 페이지 캐싱을 위해 Memcached를 사용하도록 Rails에 지시하려면 어떻게해야합니까? 내 development.rb 파일에서Memcached를 사용한 페이지 캐싱

:

config.action_controller.perform_caching = true 
config.cache_store = :mem_cache_store 

답변

8

당신은 캔트. memcached의 페이지 캐싱은 Rails를 통해 요청을 처리해야하기 때문에 액션 캐싱과 같습니다. 페이지 캐싱은 Rails를 우회하기위한 것이므로 Nginx 나 Apache와 같이 서버에서 서비스 할 수있는 파일에 데이터를 저장해야합니다. 페이지 캐싱이 너무 빠른 이유는 레일스를 완전히 우회하기 때문입니다. (예 : Apache 또는 nginx를) 지금까지 갈 필요없이

페이지 캐싱은 웹 서버에 의해 충족되어야 페이지 생성 에 대한 요청을 할 수있는 레일 메커니즘 입니다 : 여기에 레일 문서의 말씀입니다 레일 스택. 분명히 이것은 초고속입니다. 웹 서버는 말 그대로 단지 파일 시스템에서 파일을 제공하기 때문에 불행하게도, 그것은 모든 상황 (예 : 인증이 필요한 페이지) 및 적용 할 수 없습니다, 캐시 만료 요구가 처리 될 수있는 문제이다 .

자세한 내용은 here을 참조하십시오.

+0

페이지 캐시가 저장되는 위치를 지정할 수 있습니까? – SZH

+1

파일은 공용 디렉토리에서 제공되어야하며 클라이언트에 제대로 제공되어야하므로 파일과 동일한 경로를 가져야합니다. 예 : public/users/13/profile.html은 public/user_13_profile.html에 저장할 수 없습니다. Nginx 또는 Apache 웹 서버가이 파일을 후자의 경로와 연관시키지 않기 때문입니다. –

0

확인이 :

http://globaldev.co.uk/2012/06/serving_memcached_pages_from_nginx/

곧 그것을 절단, "memcaches_page"보석 (번들 다음 GemFile에 추가), 다음 memcaches_page하는 caches_page 지침을 변경 설치 후 Nginx에 전 페이지 memcached와 서버를 제공하는 구성 (기사에서 설명 된) 응용 프로그램을 친다.