- PVSM.RU - https://www.pvsm.ru -

Ускоряем WordPress

image

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

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

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 [2] для WordPress.

Кеширование

Это наиболее важный пункт. Кеширование может дать значительное ускорение сайта и экономию ресурсов сервера. Для наглядности будем использовать ab от Apache [3]. Проверим стандартную установку 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

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

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 [5]. Он позволяет снизить время на обработку запроса еще почти на порядок, но само решение менее гибкое (хорошо подойдет для блогов без элементов динамики).

Стили, скрипты и картинки

Минификация и сжатие

Минификация CSS/JS может сэкономить 10...15% их размера. Для включения минификации статики есть модуль WP Minify [6]. Качайте, активируйте и модуль начнет работать.

Оптимизация картинок

Картинки могут составлять очень большую часть общего размера страницы. Lossless сжатие картинок может сэкономить 30...40% их размера. Это умеет делать модуль EWWW Image Optimizer [7]. Для его работы понадобится установить imagemagick и библиотеку gd:

apt-get install imagemagick php5-gd

Хорошие практики и опыт

  • Лучше всего выбирать VPS [8] для хостинга [8] WordPress. На Shared хостинге [8] многое из описанного выше сделать невозможно. Кроме этого, VPS [8] сейчас достаточно дешевый.
  • Проверяйте темы с помощью Pagespeed перед использованием
  • Очищайте корзину
  • Удаляйте старые ревизии постов
  • Удаляйте спам-комментарии
  • Отключайте трекбеки в моменты, когда все становится совсем медленно
  • Раздавайте RSS через feedburner

В результате

У нас получилось голую установку WordPress разогнать почти в 100 раз по времени генерации страницы (мы включили Varnish) и увеличить показатель по Pagespeed с 76 до 93:

image

Полезные инструменты и ресурсы

Профайлер P3 [9] покажет множество узких мест Вашей текущей установки WordPress. Удобный интерактивный чеклист по оптимизации WordPress [10] позволит не держать все в голове, но ничего не упустить.

Кстати, анализ sevenpercentcatherine.wordpress.com (хостится [8] на wordpress.com) набирает 83 из 100 по Pagespeed. Из проблем — нет минификации и слишком большой ответ от сервера (350мс).

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

Автор: golotyuk

Источник [11]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/wordpress/60724

Ссылки в тексте:

[1] Pagespeed: http://highload.com.ua/post/Google+Pagespeed+-+%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7+%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D1%81%D0%BA%D0%BE%D0%B9+%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8

[2] расширенная настройка MySQL: http://highload.com.ua/post/%D0%9A%D0%B0%D0%BA+%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE+%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D1%82%D1%8C+MySQL+%D0%B4%D0%BB%D1%8F+Wordpress%3F

[3] ab от Apache: http://highload.com.ua/post/AB+-+%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5+%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8+%D0%BD%D0%B0+%D1%81%D0%B0%D0%B9%D1%82

[4] Этот плагин: http://wordpress.org/plugins/wp-super-cache/

[5] Varnish: http://highload.com.ua/post/%D0%9A%D0%B0%D0%BA+%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C+varnish+%D0%B4%D0%BB%D1%8F+wordpress%3F

[6] WP Minify: http://highload.com.ua/post/WP+minify+-+%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+JS%2FCSS+%D0%B4%D0%BB%D1%8F+Wordpress

[7] EWWW Image Optimizer: https://wordpress.org/plugins/ewww-image-optimizer/installation/

[8] VPS: https://www.reg.ru/?rlink=reflink-717

[9] Профайлер P3: http://wordpress.org/plugins/p3-profiler/

[10] чеклист по оптимизации WordPress: http://highload.com.ua/post/%D0%A7%D0%B5%D0%BA%D0%BB%D0%B8%D1%81%D1%82+%D0%BF%D0%BE+%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8+%D0%B8+%D1%83%D1%81%D0%BA%D0%BE%D1%80%D0%B5%D0%BD%D0%B8%D1%8E+Wordpress

[11] Источник: http://habrahabr.ru/post/224159/