WordPress в стандартной установке довольно медленный. По умолчанию движок не использует некоторые возможности современного Веба для значительного своего ускорения. Существует целая куча плагинов для оптимизации WordPress'a. Давайте наведем в них порядок и проведем капитальную оптимизацию.
Прежде чем приступить, посмотрим, что показывает голая установка WordPress по Pagespeed:
Результат 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 лучше поставить в половину доступной оперативной памяти:
Это наиболее важный пункт. Кеширование может дать значительное ускорение сайта и экономию ресурсов сервера. Для наглядности будем использовать 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мс (сервер находится в Нидерландах):
WP Super Cache
Этот плагин позволяет включить кеширование буквально в одно действие. Кроме стандартных настроек, он содержит большое количество параметров для тюнинга кеша. Качаем плагин, активируем его в панели управления и включаем кеш:
С включенным 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 раза:
В качестве серверной альтернативы 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:
Полезные инструменты и ресурсы
Профайлер P3 покажет множество узких мест Вашей текущей установки WordPress. Удобный интерактивный чеклист по оптимизации WordPress позволит не держать все в голове, но ничего не упустить.
Кстати, анализ sevenpercentcatherine.wordpress.com (хостится на wordpress.com) набирает 83 из 100 по Pagespeed. Из проблем — нет минификации и слишком большой ответ от сервера (350мс).
Делитесь своим опытом и инструментарием ускорения WordPress'a в комментариях.