С тех пор как WPML стал коммерческим продуктом, wpml.org справляется с гораздо большим объемом трафика. Две недели назад наш сервер работал с нагрузкой 95%, а время отклика превышало 10 секунд. Благодаря W3TC нагрузка снизилась до 5%, а время отклика составляет около 300 мс.
Если Вы с ним не знакомы, W3TC — это плагин для повышения производительности сайта. Он включает в себя кеширование страниц, но это только начало. Помимо базового кеширования страниц, он также минифицирует файлы JS и CSS, сжимает все данные и управляет CDN (сетью доставки контента). В совокупности эти функции могут значительно ускорить работу сайта, позволяя сложным сайтам на WordPress справляться с большим объемом трафика.
Почему это так важно для сайтов на WordPress?
Лучше один раз увидеть, чем сто раз услышать. Вот как загружается наш сайт без какого-либо кеширования (сгенерировано с помощью Pingdom Tools):

Если Вы думаете, что это страшно, имейте в виду, что в реальности все было еще хуже. Этот график времени загрузки был получен, когда наш сервер работал с нагрузкой 5%. Когда он действительно работал без кеша, сервер «кипел» при нагрузке 95%, а время обработки было намного больше. На получение первого байта уходило 5 секунд, а не полсекунды, как Вы видите на этом графике.
Для полного отображения нашей главной страницы серверу приходилось отправлять 77 файлов. Даже на этом графике, при нагрузке сервера 5%, загрузка заканчивается тайм-аутом на 30 секундах (см. красные линии).
Связано ли это с небрежным программированием и плохими методами проектирования? Нет.
Сила WordPress заключается в его модульности. Вы можете выбрать любую понравившуюся тему оформления с любой комбинацией плагинов. Это означает, что каждый из них разрабатывается независимо и работает со своими собственными ресурсами. Большинство плагинов, которые Вы включаете, содержат несколько файлов CSS и JavaScript и вносят свой вклад в нагрузку на PHP и MySQL. Вы могли бы оптимизировать это вручную, но тогда Вы потеряли бы всю эту замечательную модульность, и мы бы вернулись к самому началу.
Проверьте свой сайт с помощью инструментов Pingdom или других сервисов измерения времени загрузки страницы (для этого есть дополнение для Firefox). Посмотрите, какие файлы загружаются и в каком порядке. Вы заметите, что файлы CSS загружают изображения и другие файлы CSS, а для каждой страницы загружается множество файлов JavaScript.
Для затравки, вот чего мы добились, используя все возможности W3TC:

Цифры, которые Вы здесь видите, верны. Для отображения страницы загружается в общей сложности 28 файлов. 5 файлов поступают с wpml.org (нашего собственного сервера), а остальные — из CDN (сети доставки контента). PHP почти ничего не нужно делать для обслуживания этой страницы, кроме проверки её наличия в кеше и нескольких других мелких проверок.
Вся страница загружается менее чем за 2 секунды и создает нагрузку, которую мы едва можем измерить на сервере. Мы счастливы, посетители счастливы, и даже Google счастлив.
Шаг 1) Кеширование страниц
Первое и самое основное, что Вам нужно сделать — это включить кеширование страниц. Перейдите в раздел Performance, включите W3TC и настройте раздел Page Caching.

Для кеширования страниц мы оставили базовые настройки. Единственное, что мы добавили — это исключили разделы учетных записей клиентов и загрузок из кеша страниц, чтобы W3TC не мешал работе учетных записей клиентов WPML и загрузкам WPML.
Если Вы используете кеширование опкода, W3TC воспользуется этим для дальнейшего ускорения Вашего сайта. Мы его не используем, но это имеет смысл, если у Вас выполняется сложная обработка PHP, которая не кешируется.
Шаг 2) Минификация — упаковка и сжатие CSS и JavaScript
Помните все те файлы CSS и JS, которые добавляют тема оформления и плагины? Пришло время устранить нагрузку, которую они создают.
Минификация собирает несколько файлов ресурсов, упаковывает их в один файл и сжимает его. В результате получается один файл большего размера вместо десятков крошечных.
Даже если общий размер уменьшится всего на 50%, снижение нагрузки будет огромным. Вместо того чтобы браузеру приходилось отправлять несколько HTTP-запросов и получать множество крошечных файлов, он отправляет один запрос и получает их все вместе. Это изменение, вероятно, вносит наибольший вклад в улучшение скорости отклика Вашего сайта — особенно для новых посетителей (у которых Ваши файлы CSS и JS еще не закешированы).
Нажмите кнопку Help в верхней части страницы. W3TC просканирует весь Ваш сайт и найдет файлы ресурсов. Затем он позволит Вам выбрать, какие из них объединить. Обычно Вы можете выбрать все, но Вам нужно обратить внимание на то, что Вы делаете, так как это может изменить порядок загрузки.
После того как Вы выбрали файлы CSS и JS для минификации, Вам нужно убедиться, что их порядок правильный.
Для файлов CSS перетаскивайте файлы вверх и вниз в списке.

Порядок, который Вы видите в этом списке, должен соответствовать порядку, в котором файлы CSS загружаются без минификации. Вы можете увидеть это в исходном коде Вашей HTML-страницы.
С файлами JavaScript все немного сложнее. Здесь порядок загрузки еще более критичен, так как неправильный порядок приведет к ошибкам JS и нарушению функциональности.

W3TC позволяет выбрать, какие файлы JS отправляются в раздел заголовка (header), а какие — в тело страницы (body). Например, скрипты Google Analytics будут размещены непосредственно перед , в то время как jQuery помещается в заголовок, так как он должен выполняться первым (и вне списка минификации).
Шаг 3) Сеть доставки контента (CDN)
Для нас вишенкой на торте стала прекрасно работающая CDN.
Настройка и запуск CDN выходят за рамки этой записи, так как требуют создания учетной записи в стороннем сервисе.
Для наших собственных сайтов мы используем Amazon S3 для хранения и CloudFront для доставки. Существуют и другие отличные варианты, которые Вы можете изучить и сравнить.
После настройки Вашей учетной записи CDN W3TC отправляет Ваши локальные файлы в CDN и заменяет ссылки с Вашего сервера на файлы в CDN. После этого Ваш сервер отправляет только файлы HTML, а CDN берет на себя все остальное.
В то время как Ваш сервер — это одна машина, CDN на самом деле представляет собой сеть серверов. Она будет отправлять файлы с ближайшего к каждому посетителю сервера. CDN могут обслуживать статические файлы намного быстрее, чем любой одиночный сервер. Используя CDN, Вы улучшаете взаимодействие с посетителями и значительно снижаете использование пропускной способности и сети Вашего сервера.

Вам следует воспользоваться мастером настройки CDN в W3TC. Он поможет Вам перенести библиотеку медиафайлов, ресурсы темы оформления и плагинов в CDN.
Вам нравится оптимизировать производительность сайта? Дайте нам знать, оставив комментарий здесь!


