2010-05-01 3 views
1

Я хотел бы фрагментировать кеш-часть страницы.
На взгляд у меня естьКэширование фрагментов

<% cache("saved_area") do %> 
. 
<% end -%> 

В контроллере:

def index 

    read_fragment("saved_area") 

    end 

В конфигурации/продукции:

config.cache_store = :file_store, File.join(RAILS_ROOT, 'tmp', 'cache') 

Файл был создан в каталоге TMP/кэш. Но я не уверен, используется ли кеш в запросе, так как я предполагаю, что в журнале должна быть строка, в которой указывается, что кеш используется (а его нет).

ответ

2

Rails устанавливает уровень журнала в рабочем режиме на :info, следовательно, он не регистрирует хиты и промахи кэша. Если вы установите

config.log_level = :debug 

в вашем config/enviroments/production.rb, то вы увидите сообщения, как:

Cached fragment hit: views/test (0.2ms) 
Cached fragment miss: views/test (1.8ms) 

в журнале. Второе решение - настроить среду разработки для выполнения кэширования, поскольку :debug - это уровень журнала по умолчанию в этой среде. Это может быть сделано путем установки:

config.action_controller.perform_caching = true 
config.cache_store = :file_store, File.join(RAILS_ROOT, 'tmp', 'cache') 

Это самый лучший способ сделать это, так как если ваше приложение идет в производство, вы не зарегистрируете, что много.

BTW: Вам не нужно звонить read_fragment в ваш контроллер. Вспомогательный метод cache сделает это за вас.

Смежные вопросы