Статьи Архив статей

Автор: Arion
Опубликована: 3 февраля 2009, habrahabr.ru/blogs/ruby/50840/

3 простых совета, которые сделают ваше Rails приложение быстрее, часть #1

Я знаю, что уже много людей писали руководства, помогающие вашему веб-приложению работать быстрее. Но я постараюсь сосредоточиться на самых простых, но наиболее эффективных методах, которые помогут вам существенно ускорить ваше приложение без потери какого-либо функционала из Ruby on Rails.

Совет #1: Приберите ваш статический контент

Часто бывает что одно веб-приложение подгружает сразу несколько javascript-файлов и css-стилей. Что существенно замедляет загрузку страницы, так как веб-браузер каждый раз заново запрашивает новый файл.

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

Ставим:

script/plugin install git://github.com/sbecker/asset_packager.git

Пример config/asset_packages.yml:

javascripts:
- base:
    - prototype
    - effects
    - controls
    - dragdrop
    - application
- secondary:
    - foo
    - bar
stylesheets:
- base:
    - screen
    - header
- secondary:
    - foo
    - bar

И запускаем рэйк таск:

rake asset:packager:build_all

Дальше для яваскрипта пишем

<%= javascript_include_merged :base %>

или

<%= javascript_include_merged 'prototype', 'effects', 'controls', 'dragdrop', 'application' %>

Для стилей пишем:

<%= stylesheet_link_merged :base %>

или

<%= stylesheet_link_merged 'screen', 'header' %>

В итоге получаем для режима разработки наш старый код например:

<script type="text/javascript" src="/javascripts/prototype.js"></script>
<script type="text/javascript" src="/javascripts/effects.js"></script>
<script type="text/javascript" src="/javascripts/controls.js"></script>
<script type="text/javascript" src="/javascripts/dragdrop.js"></script>
<script type="text/javascript" src="/javascripts/application.js"></script>
<link href="/stylesheets/screen.css" type="text/css" />
<link href="/stylesheets/header.css" type="text/css" />

А в режими продакшена будет:

<script type="text/javascript" src="/javascripts/base_packaged.js"></script>
<link href="/stylesheets/base_packaged.css" type="text/css" />

Теперь чтобы сделать нагрузку еще меньше, переносим все свои статические файлы на другой хост (почему здесь). В рельсах это очень просто сделать, достаточно добавить в config/environments/production.rb такую строчку:

config.action_controller.asset_host = "http://assets.example.ru"

Теперь все image_tag, javascript_include_tag и т.д. будут указывать на этот хост.

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

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