Я хотел бы фрагментировать часть кэша страницы.
На представлении я имею
<% 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 каталоге. Но я не уверен, используется ли кэш в запросе, так как я предполагаю, что должна быть строка в журнале, указав, что кэш используется (и нет).
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
сделает это за вас.