2 February 2009

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

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

Совет #1: Приберите ваш статический контент
  Часто бывает что одно веб-приложение подгружает сразу несколько javascripts и 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 таск:
rake asset:packager:build_all

  Дальше для javascript пишем
<%= javascript_include_merged :base %>
или
<%= javascript_include_merged 'prototype', 'effects', 'controls', 'dragdrop', 'application' %>

  Для стилей пишем:
<%= stylesheet_link_merged :base %>
или
<%= stylesheet_link_merged 'screen', 'header' %>

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






<link href="/stylesheets/screen.css" type="text/css" />
<link href="/stylesheets/header.css" type="text/css" />

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


<link href="/stylesheets/base_packaged.css?123456789" type="text/css" />

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

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

UPD: Вместо плагина можно использовать <%= javascript_include_tag :all, :cache => true %>, подробнее здесь. Спасибо grossu
Tags: ruby ruby on rails оптимизация кэширование cache
Hubs: Ruby on Rails
+21
1.3k 29
Comments 10
Ads
Top of the day