Статьи

Автор: timurv
Опубликована: 3 октября 2008, habrahabr.ru/blogs/ruby/41583/

Кеширование статики через expires и asset timestamps в Ruby

Для ускорения загрузки страницы можно выставлять у статичных компонентов заголовок 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

  • тогда, когда файл изменится, то изменится и путь к нему, соответственно и клиентский браузер отправит запрос заново
  • необходимо сделать так чтобы web server устанавливал всем статичным файлам, у которых есть assets timestamps заголовок Expires c далеко в будущем времени:
  • Остается только при помощи YSlow проверить, что наша конфигурация работает

UPD: Пример в реальном конфиге gist.github.com/14614

Читать дальше

Все комментарии (habrahabr.ru)