Ускорение загрузки веб-сайта на Ruby on Rails

31 Oct 2007


Поигрался я на днях с интересным плагином к Firefox -- YSlow от Yahoo и понял на сколько плохи дела у меня с оптимизацией загрузки веб-сайта. Очень полезная утилита, советую всем веб-мастерам, разработчикам и гикам.

дрезина для рельсов Для рельсов как всегда есть готовые дрезины, ой плагины :-) Поэтому сделать все получилось довольно быстро, не считая некоторого шаманства с typo. Есть две статьи по которым можно в элементаре поставить плагин и настроить на свой Rails-проект. Поэтому просто привожу на них ссылки -- Сам плагин, с документацией и YSlow and Rails performance.

Пошагово: 1. ./script/plugin install http://sbecker.net/shared/plugins/asset_packager 2. rake asset:packager:create_yml 3. vim config/asset_packages.yml. См. мой вариант ниже. 4. rake asset:packager:build_all 5. Правим темплейт <%= javascript_include_merged :base %>, тоже для css -- <%= stylesheet_link_merged :base %> 6. Рестартуем (если надо) ruby- процесс.

Особенности движка typo. В app/helpers/articles_helper.rb есть специальный хелпер (page_header) для построения заголовка страницы, так вот вставку javascript надо делать именно там, а не в темплейте.

Так в чем же суть убыстрения? В том, что asset_packager пакует все css/js файлы в один (соответственно один js и один css файл). Плюс оптимизирует сам код -- удаляет комментарии, лишние пробелы. Получаются в итоге два очень хорошо утрамбованные статические файла, которые еще при отдаче со сжатием (gzip) вообще будут грузиться моментально. Для примера по статистике YSlow livedev.org стал грузиться в два раза быстрее.

Мой config/asset_packages.yml


javascripts: - base: - cookies - prototype - effects - typo stylesheets: - base: - theme/layout - theme/content - theme/body