Каков наилучший способ кэширования статических страниц в Rails 4?

#ruby-on-rails #caching #ruby-on-rails-4

#ruby-on-rails #кэширование #ruby-on-rails-4

Вопрос:

Чтобы повысить производительность моего приложения Rails 4.0.2, я хотел бы кэшировать выходные данные некоторых моих статических страниц:

 class PagesController < ApplicationController

  def home
  end

  def about_us
  end

  def contact
  end

end
  

В руководстве Rails по кэшированию говорится, что «Кэширование страниц было удалено из Rails 4» и перемещено в gem. Однако в описании gem говорится, что оно будет поддерживаться только до Rails 4.1. Некоторые другие наблюдатели также советуют не использовать кэширование страниц и вместо этого одобряют кэширование русской куклы.

Итак, каков наилучший способ кэширования кучи статических страниц, которые никогда не попадут в базу данных и изменятся (незначительно) только при входе пользователя в систему?

Спасибо за любые предложения.

Комментарии:

1. Tintin81, в данный момент я сталкиваюсь с той же проблемой. Каким было ваше решение? Я предполагаю, что это какое-то HTTP-кэширование, но как и когда срок действия страницы истекает?

Ответ №1:

Вы все еще можете использовать кэширование фрагментов для своих статических страниц, хотя преимущества, очевидно, более заметны на динамических страницах / страницах, управляемых БД. Стоит подумать об этом, если у вас много частичной визуализации или дорогостоящей логики просмотра. Просто оберните шаблон вашей страницы:

 # about_us.html.erb
<% cache 'about_us' do %>
  ...
<% end %>
  

при первом попадании на страницу в среде where config.action_controller.perform_caching = true она сгенерирует фрагмент (который в данном случае является всей вашей страницей), и он будет использоваться при следующей перезагрузке. Дайджест кэша будет признан недействительным при изменении шаблона:

Дайджест шаблона, добавляемый в ключ кэша, вычисляется путем взятия md5 содержимого всего файла шаблона. Это гарантирует, что срок действия ваших кэшей автоматически истечет при изменении файла шаблона.

http://api.rubyonrails.org/classes/ActionView/Helpers/CacheHelper.html