Для ускорения загрузки страницы можно выставлять у статичных компонентов заголовок expires далеко в будущее.
Однако есть одна проблема: вам придётся менять название файла или путь к нему, чтобы пользователь узнал, что файл нужно перечитать.
В Rails есть полезная возможность assets timestamps, если честно, раньше не понимал зачем это нужно.
Разберёмся?
Чтобы не повторяться, дам сылку на статью с детальным описанием логики: Configure the Expires header for Rails under nginx
Общий смысл следующий:
если мы всю статику вставляем в шаблоны через rails helpers, то Rails в production добавит к ним так называемые assets timestamps. Грубо говоря это:
File.mtime(path).to_i.to_s # rails_asset_id
if ($request_uri ~* "\.(ico|css|js|gif|jpe?g|png)\?[0-9]+$") { expires max; break; }
ExpiresDefault "access plus 1 year"
UPD: Пример в реальном конфиге gist.github.com/14614