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

Posted by dobrych Wed, 31 Oct 2007 00:00:00 GMT

Поигрался я на днях с интересным плагином к 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