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

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

    Совет #2: Уберите все лишнее

      Аутентификация, обращение к сессиям, проверка прав пользователя и лишнии запросы к базе. Действительно ли нужно выполнять все это при каждом запросе к серверу?

      Вы можете отключить сессии у конкретных Action просто указав:
    session :off, :only => :index

      Это существенно повышает производительность и является отличной альтернативой для кэширования, если вам необходима обратиться к базе данных но при этом нет необходимости проверки прав пользователя.

      Если вы используете RestfulAuthentication или ActsAsAuthenticated плагины, вы можете отключить проверку прав пользователя для некоторых Action, что сохранит для вас один запрос к базе.
    skip_filter :login_from_cookie
    или
    skip_filter :login_required
    ну или, что там у вас еще…

       Используя fragment caching для ваших Partials пропускайте запросы к базе в вашем контроллере через read_fragment
    @users = User.find('all) unless read_fragment(’unique_cache_key’)

    Кроме того не забывайте правильно использовать опцию :include в ваших запросах для подгрузки ассоциаций
    Post.find(:all, :include => :user)

    Это сократит число запросов в 2 раза
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 13

      +1
      про подгрузки ассоциаций — не знал, спасибо.

      "… можете отключить сессии..." исправьте, пожалуйста.
        –1
        Исправил
        +1
        Partical -> Partials
          –1
          Спасибо, исправил
          +3
          А почему вы не указываете, что это топик-перевод? Оригинал вот тут: 3 simple tips to make your Rails app 100 times faster
            –1
            Само лучшие ускорение для rails приложение даёт использование haproxy. Правда нагрузку на сервер это даже несколько увеличит, но отклик реально очень сильно ускорит.
              –7
              Самое лучше ускорение для rails — это python :)
              А по правде говоря, page caching рулит.
              Из перечисленных же советов реально будет давать буст только третий.
              +1
              Кроме того не забывайте правильно использовать опцию :include в ваших запросах для подгрузки ассоциаций
              Post.find(:all, :include => :user)

              Это сократит число запросов в 2 раза

              В новых версиях (начиная с 2.1.x), такой поиск будет делаться в два запроса: сначала выборка всех id для модели Post, а потом подгрузка ассоциации запросом select * from users where post_id IN (N, N, N, ..., N). Исключение будет только для conditions, где используются поля из ассоциации.
                0
                > в два запроса

                странно, почему бы не сделать в один, приjoinив нужные таблицы?
                  0
                  хотя, с другой стороны, если join'ов будет много и запрос будет большой, то несколько маленьких запросов могут выполнится быстрее
              0
              Для новичков: вам может сильно помочь это — github.com/nkallen/cache-money/tree/master (из новья)

              И, конечно, guides.rubyonrails.org/caching_with_rails.html

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое