Кэширование фрагмента

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

<% 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
задан red5 1 May 2010 в 20:47
поделиться

1 ответ

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 сделает это за вас.

2
ответ дан 3 September 2019 в 00:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: