Управление активами с помощью Rails 3 (на Heroku) (Jammit, AssetHat, Rack PageSpeed) - PullRequest
6 голосов
/ 27 мая 2011

Меня интересуют плюсы и минусы различных инструментов для управления активами в Rails 3.0.x (особенно в Heroku).

Уже есть несколько старых вопросов по этой теме, но в то же время доступны некоторые новые инструменты.

Меня особенно интересуют следующие инструменты:

Jammit, кажется, может делать все, что может делать AssetHat, а также доступен дольше. Так где же AssetHat подходит?

Rack PageSpeed, кажется, делает все на лету, напрямую работая с ответом сервера. Были ли у вас какие-либо проблемы с производительностью? Вы бы порекомендовали его по двум другим решениям?

Ответы [ 3 ]

14 голосов
/ 31 мая 2011

Привет, я автор AssetHat.Минификация и объединение являются одними из самых простых способов повышения производительности;Эти функции являются общими для Jammit, AssetHat и Rack-PageSpeed.Rails уже давно поддерживает конкатенацию (хотя это делается во время выполнения, а не во время развертывания), и неудивительно, что Rails 3.1 поддерживает как минификацию, так и конкатенацию во время развертывания.

Остальные функции - то, что делает каждыйиз этих управляющих активами интересно.Например, Jammit полезен, если вы хотите встроить изображения и файлы шрифтов прямо в таблицы стилей.rack-pagespeed также удобен, если вы хотите сохранить все свои оптимизации в совершенно отдельном слое.

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

Если ваши ресурсы слишком велики для встраивания или объединения, AssetHat помогает оптимизировать CDN и параллельную загрузку:

  • Это дает большие преимущества CDN.будь то CDN Google , cdnjs (который использует серверы Amazon ) или другой CDN по вашему выбору.Например, просто добавьте <%= include_js :jquery %> в свой макет (и номер версии в файле конфигурации), чтобы загрузить jQuery из CDN Google.Если вы находитесь в режиме разработки и у вас есть локальная копия jQuery, она загружается вместо этого - просто в автономном режиме dev.
  • AssetHat может переписать URL-адреса изображений таблиц стилей, чтобы использовать вместо них ваш CDN .Это считывает ваши настройки config.action_controller.asset_host и выполняется во время развертывания.Ваш оригинальный CSS остается нетронутым.
  • Если у вас есть несколько файлов JS для загрузки, иногда быстрее загружать их параллельно, чем объединять их (то есть заставлять их загружать последовательно).Вы можете легко включить LABjs mode : <%= include_js 'big-file-1', ..., 'big-file-n', :loader => :lab_js %>.Если у вас нет копии LABjs локально или вы работаете, LABjs загружается с серверов Amazon через cdnjs.

Используя CDN, такие как Google или Amazon, ваши пользователи могут загружать большересурсы параллельно (так как существует больше имен хостов), обладают большей скоростью, а иногда даже не требуют загрузки ресурсов вообще (например, если они уже загрузили копию jQuery от Google через чужой сайт).

IЯ использовал AssetHat в Heroku, настроив мой скрипт развертывания на простой запуск rake asset_hat:minify (для минимизации и объединения CSS / JS), зафиксируйте эти изменения в моем хранилище, а затем выполните фактическое развертывание.

В случае, если у вас нетВы уже видели это, возможно, вас заинтересует:

Если вам нужна помощь в настройке или у вас есть другие вопросыне стесняйтесь сообщать мнена GitHub ( rondevera ) или Twitter ( @ ronalddevera ).

1 голос
/ 31 мая 2011

Насколько я знаю, Jammit не будет работать из коробки на Heroku. Один из вариантов - использовать плагин Heroku Jammit для управления своими активами - https://github.com/chebyte/heroku-jammit.

В качестве альтернативы Jammit может быть настроен на вывод в / tmp: http://geekninja.blogspot.com/2011/04/making-jammit-jam-with-heroku.html

Rails 3.1 будет включать в себя Sprockets для обработки пакетов активов, я думаю, это стоит рассмотреть.

0 голосов
/ 25 июля 2011

Я сейчас использую jammit на heroku вместе с amazon s3, и он работает как шарм:)

Я не могу много сказать о других инструментах, потому что я ими не пользовался.

Какой из них вы выбрали, в конце концов?

Фернандо.

...