Статьи

Ускорить WordPress: 5 профессиональных приемов по оптимизации WordPress

Wordpress Speed Optimization Crunchify Tips
Потом и кровью я добыл несколько верных способов ускорить медленный сайт на WordPress. Первый из верных способов основан на оптимизации производительности в рамках пакета по обслуживанию сервера.

Когда WordPress атакуют методом грубой силы

Прием 1: Удалите медленные плагины.

Если у вас медленный WordPress-сайт, во всем могут быть виноваты эти самые плагины. Без них WordPress шустр, хоть и довольно примитивен. Поэтому не смотря на их тормозящий эффект, без плагинов не обойтись.

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

Более 500 моделей серверов по самым лучшим ценам. Под любые задачи. Мы профессионально занимаемся этим направлением.

3 метода выявления медленных плагинов WordPress

  • Разделяй и властвуй
  • P3 – Plugin Performance Profiler
  • NewRelic

Разделяй и властвуй

Этот метод прост, но эффективен, особенно если вы не сами разрабатывали сайт.
  1. Отключите все плагины и замерьте скорость сайта.
  2. Включите половину плагинов и снова замерьте скорость сайта.
Если сайт работает медленно, отключите половину из включенных плагинов. Если сайт работает все еще приемлемо, включите половину оставшихся. Продолжайте такое деление до тех пор, пока не найдете плагин или группу плагинов, которые являются корнем зла. Метод не из сложных, но работает и легко реализуется.

P3 – Plugin Performance Profiler

P3 – Plugin Performance Profiler -по сути это утилита, которая поможет вам идентифицировать вызывающие проблемы плагины. Просто установите и запустите ее.

Утилита P3 – Plugin Performance Profiler
Утилита найдет, на работу какого из плагинов затрачивается больше всего времени при исполнении кода PHP. Отключите эти плагины и проверьте, не повысилась ли скорость. Когда утилита завершит свою работу, перейдите на страницу, где все расписано подробно и проблемный плагин видать издалека. В нашем случае самой медленной оказалась собственно тема. Так что отключать особо и нечего.
3 plugin breakdown WordPress
В данном примере больше всего времени затрачивается на отображение темы. Почти все остальные плагины довольно быстры – в данном тесте они проработали меньше 1 сек.

Иными словами, здесь нет проблемы с производительностью, но если бы она была, все было бы видно сразу же. Что касается конкретных цифр, то я ими не заморачивался: этот инструмент позволяет четко указать на тонкое место, а для более серьезной оптимизации WordPress у нас есть, например, NewRelic.

NewRelic

Если вкратце, то NewRelic осуществляет профайлинг PHP-кода. Это значит, что вы можете точно установить функцию или MySQL-запрос, которые тормозят ваш сайт. Ниже, в «Бонусном приеме», о New Relic будет сказано еще пару слов. Трассировка веб-транзакции позволит вам установить, почему ваш WordPress-блог работает медленно.
Web Transactions Summary

Прием 2: Плагины – в отставку!

Очень часто вы можете избежать проблем, связанных с неторопливостью плагинов, если сами напишете пару строк кода. Зачем некоторые разработчики напихивают в WordPress 20-30 и более плагинов – для меня лично загадка. Слишком часто я вижу, что (вроде как) профессионально сделанный сайт просто кишит плагинами, которые выполняют элементарные функции. Ну, например:
  • Собирают статистику;
  • Интегрируют сайт с соцсетями;
  • Подключают граватар;
  • Осуществляют профилирование;
  • Делают всякие штуки со шрифтами.
Практически все перечисленное можно реализовать парой строчек кода. Возьмем, скажем, GoogleAnaytics for WordPress, у которого 5 миллионов скачиваний. Не поймите меня неверно, написан этот плагин хорошо, но вы можете добиться точно такого же результата, если просто поместите готовый гугловский код в хедер вашего сайта.

ManageWP
предлагает 10 кусочков кода, которые могут заменить собой большое количество плагинов. Все эти кусочки требуют наличия плагина Code Snippets, но, по мне, так лучше добавить один плагин, если это позволит избавиться от 10.

Прием 3: Кэширование

Если ваш WordPress-сайт подтормаживает даже после чистки плагинов, вам может понадобиться включить кэширование. Сделать это можно на разных уровнях:
  • На уровне базы данных;
  • На уровне PHP-кода;
  • На уровне браузера.
Кэширование на уровне БД Для улучшения производительности WordPress можно включить кэширование в MySQL. Никогда не надейтесь, что арендуемый вами сервер оптимизирован под работу с базами данных. По правде говоря, большинство провайдеров не проводит оптимизации под MySQL на новых системах. А вам это точно нужно.

Подробный разбор вопроса – это целая книга, так что я выделю всего лишь два момента.
  • Key_cache;
  • Query_cache.
Эти две штуки должны быть включены. Там есть еще много чего, но эти две – ключевые. Если вас терзают сомнения, обратитесь к провайдеру или наймите кого-нибудь, кто вам немного пооптимизировал бы на сервере.

Относитесь с недоверием к рекомендованным настройкам MySQL под WordPress. Хотя ядро всегда одно и то же, у вас, скорее всего, другие плагины, тема, количество постов и структура трафика. Вместо этого я предлагаю начать с конфигурационных файлов my-huge.cnf, my-medium.cnf или чего-то подобного и начинать потихоньку настраивать их.

Кэширование PHP

Ваше серверное окружение может давать доступ к тому, что называется OpCode Caching. Это почти спринтерское кэширование скомпилированного PHP-кода в памяти. Есть три основных системы кэширования PHP-кода:
  • APC;
  • eAccelerator;
  • Xcache.
Я бы рекомендовал APC – он хорошо работает в самых разнообразных окружениях.

Кэширование на уровне браузера

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

Посмотрите, какие результаты показывает ваш сайт при первой и повторных загрузках. Большинство элементов сайта должно кэшироваться так, что каждая следующая его страница открывается быстро. В нашем случае при первом заходе общее время загрузки составило 4,5 секунды, а рендеринг начался через 2,682 секунды. При повторной загрузке эти показатели были лучше, потому что браузер запомнил некоторые элементы. В данном случае повторное обращение потребовало только двух HTTP-запросов.
Кэширование wordPress на уровне браузера
Используйте заголовки Expires или Cache, чтобы браузер мог кэшировать статический контент.

Прием 4: Полное кэширование страницы

Полное кэширование страницы
Хотите волшебную палочку, которая превратит в гепарда ваш черепаший блог на WordPress? Есть как минимум два таких волшебных плагина, и оба, на мой взгляд, неплохо справляются со своей задачей:
Эти инструменты, в сущности, создают статическую версию вашего сайта. На тех сайтах, где контент меняется нечасто, они могут сэкономить кучу времени при работе с PHP и MySQL. Кэшированная страница выдается в 20-30 раз быстрее, чем не кэшированная.

WP Super Cache добавит в ваш HTML свое примечание, чтобы можно было увидеть, как быстро все сработало. Например:
<!-- Dynamic page generated in 0.566 seconds ->
<!-- Cached page generated by WP-Super-Cache on 2014-02-18 16:54:08 ->

Это означает, что страница сгенерировалась за 0,566 секунды, что довольно быстро. Выдача данной страницы из статического файла эти полсекунды экономит.

Однако, как и у любых плагинов, у них есть свои проблемы. Если у вас очень динамичный сайт, вы можете обнаружить, что некоторые комментарии запаздывают, а назначенные на определенное время публикации появляются не точно в заданное время.

Это один из компромиссов, на которые приходится идти при агрессивных методах кэширования: вы жертвуете частью особенностей WordPress, связанных с режимом реального времени, а взамен получаете быстрый статический HTML. Как и в случае настройки работы с базами данных, выбор плагина, который лучше всего подойдет для вашего сайта, ложится на ваши плечи.

По моим наблюдениям, WP Super Cache вызывает на сложных сайтах меньше проблем, зато W3 Total Cache предлагает больше вариантов оптимизации.

Прием 5: CDN и акселераторы


CDN (Content delivery networks – сети доставки и дистрибуции данных) и WPO (Web performance optimization – оптимизация производительности сети) помогут ускорить ваш медленный WordPress-сайт.

CDN выгружает статический контент (картинки, css, js) в распределенную сеть, и вашему серверу больше не приходится ими заниматься. Если посмотреть на современные сайты, то на HTML- или PHP-страницы приходится всего один запрос из десятков. Если эти запросы убрать, серверу станет легче. CDN обеспечивает глобальную сеть, у которой есть и другие связанные с производительностью плюсы. Сервисы WPO идут дальше простой CDN-оптимизации: они кэшируют данные, сжимают изображения, минимизируют CSS и используют другие техники, повышающие производительность. Я пользовался услугами WPO-провайдера CloudFlare, и пользователи были очень довольны результатом.

CDN и Cloudflare дают эффект преимущественно на серьезно нагруженных сайтах. Если ваш трафик угрожающе растет, или просто не удается справиться с проблемами, применяя описанные выше способы, имеет смысл обратиться WPO-провайдеру.

Бонусный прием: Семь раз отмерь

«Но почему же об этом в конце, ведь именно так нужно начинать?», – спросите вы.

Все очень просто: людям свойственно браться за дело очертя голову – поэтому я и рассказал сначала о «починке». Но по-взрослому, конечно, начинать надо с бенчмарков.

Часто бывает, что разработчики WP принимаются делать какие-то изменения на сервере и сайте еще до того, как установят, где же на самом деле это узкое место. Но не натравливая профайлер на сайт, понять причину его зависаний сложно.

Для профайлинга WordPress-решений существует несколько инструментов:
  • WebPageTest.org;
  • NewRelic;
  • Blitz.io.

WebPageTest.org

WebPagetest – проект с открытым исходным кодом, значительный вклад в разработку и поддержку которого в рамках своих усилий по ускорению веба вносит Google.
Это описание говорит само за себя. Не хочу вдаваться в подробности по поводу всех их метрик, но если у вас серьезные намерения в отношении производительности своего сайта, запускайте бенчмарк. Запускайте несколько раз, чтобы исключить случайные вариации. Я обычно запускаю 10 раз и вычисляю среднее.

Зайдите к ним на WebPageTest.org. Смотрите на каскадную диаграмму (она еще называется водопадная или «летающие кирпичи»), а не на буквы рейтинга. Буквы все только путают, а дьявол в деталях.

NewRelic

Об этом инструменте я уже говорил. Если вы настроены решительно бороться с тормозами, этот инструмент подходит как нельзя лучше. NewRelic производит детальный профайлинг PHP и MySQL. Единственный недостаток – его сначала нужно установить к себе на сервер. Обычно я пользуюсь им в связке с WebPageTest для тяжелых случаев оптимизации.

Blitz.io

Иногда проблемы с производительностью WordPress не проявляются до тех пор, пока трафик не становится космическим. Чтобы смоделировать такой, воспользуйтесь решениями вроде Blitz.io – они без проблем организуют вашему сайту стресс-тест. Я чаще всего чередую такие инструменты с описанными выше утилитами: внес изменения – стресс-тест – посмотрел, что получилось – начал всё сначала.

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



Комментировать