Ускоряем Wordpress

imageWordpress в стандартной установке довольно медленный. По умолчанию движок не использует некоторые возможности современного Веба для значительного своего ускорения. Существует целая куча плагинов для оптимизации Wordpress’a. Давайте наведем в них порядок и проведем капитальную оптимизацию.

Прежде чем приступить, посмотрим, что показывает голая установка Wordpress по Pagespeed:

image

Результат 76 из 100 довольно низкий. Посмотрим, насколько можно увеличить этот показатель.

Серверная частьNginx Если Вы еще не используете Nginx, пора переехать на него. Простое и мощное решение. Конфигурация для работы с поддержкой permalinks и кешированием статики: server { server_name wp.com; root /var/www/wp; # путь к WP index index.php;

location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe$ access_log off; log_not_found off; expires max; # кеширование статики }

location / { try_files $uri $uri/ /index.php?$args; # permalinks }

location ~ \.php$ { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } } PHP APC Если у Вас нет каких-то особых причин, по которым Вы не можете установить APC, включайте его обязательно. Проверяем наличие APC (в ответ получим список настроек APC): php -i | grep apc Тюнинг Mysql Wordpress использует InnoDB, а это значит мы можем существенно увеличить производительность MySQL, подстроив ряд параметров (файл my.cnf) под наше железо: Размер буфера InnoDB лучше поставить в половину доступной оперативной памяти:

innodb_buffer_pool_size = 256M Не забываем включить кеширование MySQL:

query_cache_size = 32M query_cache_limit = 1M Более расширенная настройка MySQL для Wordpress.

Кеширование Это наиболее важный пункт. Кеширование может дать значительное ускорение сайта и экономию ресурсов сервера. Для наглядности будем использовать ab от Apache. Проверим стандартную установку Wordpress без кеширования. Запросы направляем через локальную сеть, поэтому задержку ничего, кроме самого Wordpress’a не создает: ab -c 10 -n 500 http://wordpress/ Получаем среднее время на запрос около 50 мс:

Total transferred: 4183000 bytes HTML transferred: 4074500 bytes Requests per second: 17.62 [#/sec] (mean) Time per request: 567.421 [ms] (mean) Time per request: 56.742 [ms] (mean, across all concurrent requests) Transfer rate: 143.98 [Kbytes/sec] received Хром показывает среднее ожидание ответа на уровне 150 мс (сервер находится в Нидерландах):

image

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

С включенным WP Super Cache получаем уменьшение среднего времени на запрос в 25 раз (!):

Total transferred: 4293500 bytes HTML transferred: 4146500 bytes Requests per second: 499.01 [#/sec] (mean) Time per request: 20.040 [ms] (mean) Time per request: 2.004 [ms] (mean, across all concurrent requests) Transfer rate: 4184.61 [Kbytes/sec] received Cреднее ожидание ответа в Хроме уменьшилось в 3 раза:

image

В качестве серверной альтернативы WP Super Cache можно использовать Varnish. Он позволяет снизить время на обработку запроса еще почти на порядок, но само решение менее гибкое (хорошо подойдет для блогов без элементов динамики).

Стили, скрипты и картинки Минификация и сжатие Минификация CSS/JS может сэкономить 10…15% их размера. Для включения минификации статики есть модуль WP Minify. Качайте, активируйте и модуль начнет работать.Оптимизация картинок Картинки могут составлять очень большую часть общего размера страницы. Lossless сжатие картинок может сэкономить 30…40% их размера. Это умеет делать модуль EWWW Image Optimizer. Для его работы понадобится установить imagemagick и библиотеку gd: apt-get install imagemagick php5-gd Хорошие практики и опыт Лучше всего выбирать VPS для хостинга Wordpress. На Shared хостинге многое из описанного выше сделать невозможно. Кроме этого, VPS сейчас достаточно дешевый. Проверяйте темы с помощью Pagespeed перед использованием Очищайте корзину Удаляйте старые ревизии постов Удаляйте спам-комментарии Отключайте трекбеки в моменты, когда все становится совсем медленно Раздавайте RSS через feedburner В результате У нас получилось голую установку Wordpress разогнать почти в 100 раз по времени генерации страницы (мы включили Varnish) и увеличить показатель по Pagespeed с 76 до 93: image

Полезные инструменты и ресурсы Профайлер P3 покажет множество узких мест Вашей текущей установки Wordpress. Удобный интерактивный чеклист по оптимизации Wordpress позволит не держать все в голове, но ничего не упустить.Кстати, анализ sevenpercentcatherine.wordpress.com (хостится на wordpress.com) набирает 83 из 100 по Pagespeed. Из проблем — нет минификации и слишком большой ответ от сервера (350 мс).

Делитесь своим опытом и инструментарием ускорения Wordpress’a в комментариях.

© Habrahabr.ru