Rails, как оптимизировать мой сайт? - PullRequest
3 голосов
/ 13 июня 2011

Я хочу сделать свой сайт быстрее.Я знаю, что могу создавать CSS-спрайты и сжимать свои HTML и CSS.

Есть ли другие способы оптимизировать скорость моей страницы?

Примером этой страницы является: http://www.vinderhimlen.dk/konkurrencer/vind-elektronik

Требуется несколько секунд, чтобы загрузить кнопки обмена, звездочки рейтинга и лайки в Facebook.Я действительно хотел бы оптимизировать это.Я просто не думаю, что минимизации HTML и CSS достаточно.

Ответы [ 2 ]

6 голосов
/ 14 июня 2011

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

Производительность относительно и может варьироваться в зависимости от многих факторов. Для масштабирования Rails важны два аспекта производительности:

  • Задержка - Как быстро мы можем ответить на запрос? Это измеряется как время, прошедшее между запросом и ответом.
  • Пропускная способность - Сколько запросов мы можем обработать за определенный промежуток времени? Это измеряется как ответы в секунду.

После того, как мы проведем общее тестирование производительности, мы можем легко увидеть узкие места. В этот момент мы можем дополнительно использовать упакованные инструменты, чтобы сузить область фокуса до одного или нескольких из следующих пунктов, которые расположены в порядке от наиболее распространенного до наименее распространенного:

  • Проблемы с базой данных : плохой пользовательский SQL, неправильные или неоптимальные объединения и ассоциации, слишком большие таблицы базы данных и т. Д.
  • Модельные проблемы : бизнес-правила слишком сложны или неправильно разработаны.
  • Проблемы с внешним видом : плохой выбор HTML или CSS, очень большие библиотеки javascript, неоптимизированные изображения и т. Д.
  • Транзакционные проблемы : слишком мало запущенных экземпляров Mongrel (или другого сервера приложений), недостаточно оборудования, плохо написаны или неоптимальные контроллеры, неправильно спроектированы приложения и т. Д.

Часто люди считают транзакционные проблемы причиной плохой работы, когда чаще это вызвано другими типами проблем.

Если у вас плохо спроектированный пользовательский SQL, очень большие таблицы базы данных или неоптимальные объединения или ассоциации, независимо от того, сколько оборудования вы добавляете в микшер, вы никогда не увеличите производительность. Ваше Rails-приложение просто не масштабируется. То же самое относится к некоторым транзакционным проблемам. Большинство проблем с масштабируемостью возникает, когда на этапах проектирования и кодирования были применены плохие методы.

Следующие инструменты помогут определить, где живут ваши узкие места ...

  • " query_analyzer " - MySQL-инструмент Боба Сильвы для автоматического ОБЪЯСНЕНИЯ каждого запроса.
  • " ruby-prof " - быстрый профилировщик кода Ruby, написанный на C.
  • " pl_analyze " - написанный Эриком Ходелом, он анализирует выходные данные регистратора из SysLogLogger.
  • " yslow " - Плагин Firebug для измерения и определения, почему конкретная страница работает медленно.
  • " YUI компрессор " - инструмент сжатия Javascript / CSS от команды по производительности в Yahoo.

Как только вы определили, где существуют проблемы, гораздо проще сосредоточиться и решить каждую проблему.

0 голосов
/ 13 июня 2011

Вы можете делать небольшие вещи, как вы предлагаете, однако, вероятно, самое большое улучшение будет достигнуто при использовании выборочного кэширования или фрагментного кэширования.

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

Это был единственный способ, которым я смог сделать сайт RoR даже сносно быстро.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...