Кэширование фрагментов - PullRequest
1 голос
/ 02 мая 2010

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

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

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

  def index 

   read_fragment("saved_area")

   end

В конфигурации / производстве:

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

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

1 Ответ

2 голосов
/ 02 мая 2010

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') 

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...