Кэширование статических ресурсов путем настройки HTTP-заголовка в Ruby on Rails 5

Вероятно, большинство из вас, как и я, сталкивались с PageSpeed ​​Insights от Google. Используя этот инструмент, я проанализировал свой веб-сайт, чтобы понять, как его можно оптимизировать. До сих пор все было отлично до сих пор.

Инструмент Google указал, что мне нужно использовать кеширование браузера, установив дату истечения срока действия или максимальный возраст в заголовке HTTP для статических ресурсов. Во время моего исследования я наткнулся на ряд руководств, как это сделать: edgeguides.rubyonrails.org объяснял различные способы кэширования действий, шаблонов, фрагментов действий и т. д., но ничего о ресурсах, руководство по большому двоичному файлу приводило к сбоям в работе и несмотря на то, что электронная книга «Rails 5 Revealed» Алана Брэдберна не вызвала проблем при разработке, никакие ресурсы не использовались (TypeError: нет неявного преобразования хэш-ключа символа в строку).

Проблема в ближайшее время: как настроить файлы config/environments/*.rb, чтобы статические ресурсы имели «Expire» и/или «Max-age» в заголовках HTTP и удовлетворительную информацию PageSpeed ​​Insights? Вот последняя конфигурация, которую я использовал в config/environments/production.rb:

config.cache_store = :memory_store, { 64.megabytes } 
config.public_file_server.enable = true
config.public_file_server.headers = {
    'Cache-Control' => 'public, max-age=172800',
    'Expires' => "#{1.month.from_now.to_formatted_s(:rfc822)}" }

Версия Ruby on Rails: 5.0.0.1


person Juozas Beniušis    schedule 14.01.2017    source источник


Ответы (1)


Посмотрите этот код и вставьте его в свой файл production.rb.

config.public_file_server.headers = {
    'Cache-Control' => 'public, s-maxage=31536000, maxage=15552000',
    'Expires' => "#{1.year.from_now.to_formatted_s(:rfc822)}"
}

Надеюсь, это поможет

person Mayank Rajput    schedule 17.10.2017