Здравствуйте, уважаемые читатели! Сегодня у нас очень важная и интересная статья из разряда «намотай на ус». Как ускорить WordPress , чтобы страницы блога загружались в 3 раза быстрее, а нагрузка на хостинг снизилась в 2 раза!

На моем блоге уже есть статья, посвященная , но практика показала, что перечисленных в ней мер недостаточно. То время, что я мучился с хостингом , не было потрачено зря. Оно дало повод вновь взяться за оптимизацию работы моего блога. Результатом кропотливой работы стало ускорение WordPress в 3 раза и снижение нагрузки на хостинг примерно 2 раза. Очень неплохие результаты, учитывая, что мой WP был не в таком уж запущенном состоянии. Я бы даже сказал — пациент был скорее жив, чем мертв. Эх, нет предела совершенству!

Я бы выделил 10 самых важных шагов на пути ускорения WordPress. Рассмотрим подробно каждый из них.

1. Кэширование страниц.

Пожалуй, это самый важный пункт, без которого никак не обойтись. Принцип работы WP (да и большинства других CMS) таков, что страницы блога не лежат на сервере в статическом html формате, а генерируются на основе php кода при переходе на нее пользователя. Для каждого пользователя, каждая страница генерируется вновь и вновь! Это влечет неоправданный расход ресурсов сервера и значительно увеличивает время загрузки страниц.

Принцип кэширования прост — для страницы создается статическая html версия, которая отдается всем перешедшим на нее пользователям и существует в течении определенного времени (время жизни кэша), по истечении которого обновляется. Физически эта страница представляет собой файл в формате html, который лежит на сервере в отдельном каталоге.

Всю эту теорию я написал здесь только с одной целью, чтобы вы поняли простую истину — без кэширования жизни нет! Даже если на блог заходит пару человек, помимо них есть такие скрытые гости, как боты поисковых систем. Вот они то точно будут придираться к скорости загрузки страниц блога. Для реализации кэширования в WordPress советую воспользоваться одни из следующих плагинов:

  • — пожалуй, самый популярный плагин кэширования;
  • Super Cache — использую в настоящий момент.

Выбирайте любой из них. По качеству и функционалу они схожи.

2. Оптимизация скриптов и стилей плагинов wp.

Каждый новый плагин WordPress добавляет свои файлы со скриптами и стиля, при формировании страницы все они должны подключится. Это занимает определенное время. Чтобы его сэкономить, все дополнительные файлы стилей (и скриптов) следует объединить в один файл, который в последствии и будет подключаться. Не волнуйтесь, я не заставлю вас делать это в ручную (хотя можно было, просто ради прикола ), ведь есть замечательный .

3. Уменьшение объема файла style.css.

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

Кроме этого, если вы постоянно переделываете свою тему (как я ), то со временем в файле style.css накапливаются незадействованные нигде стили. От таких «мертвых» элементов следует своевременно избавляться. Для их отслеживания я пользуюсь бесплатным дополнением Dust Me Selectors для браузера FireFox. Скачать его можно .

4. Оптимизация языкового пакета.

В деле ускорения WordPress мелочей нет, нужно сжать и уменьшить все, что только возможно, даже файл с русским языком. Долго описывать этот процесс не буду, ибо сводится все к банальному использованию . Пользуйтесь на здоровье!

5. Очистка шаблона header.php от лишнего php кода.

Только настоятельно рекомендую перед любыми работами с базой данных, создавать ее резервную копию (плагин ). Если забыли забыли снять резервную копию БД и что-то пошло не так, не пугайтесь! Если вы пользуетесь , то там всегда есть свежий бэкап. Просто откатитесь на него, и дело в izgt.

7. Тестирование скорости загрузки плагинов, удаление самых тяжелых.

10. Внешние факторы.

С этим злом я столкнулся недавно. Суть его заключается в большом числе запросов с одного или разных IP адресов. Основная цель — повысить нагрузку на сервер для торможения работы блога или его полного падения (DDos атака).

Долгое время об этой проблеме я даже не подозревал, только блог начал тормозить и время от времени выдавать ошибки. Перейдя на хостинг Hostenko, блог постоянно отключали из-за высокой нагрузки на сервер. Служба технической поддержки никакой помощи не оказывала, просто предлагала самостоятельно оптимизировать WP или приобрести VPS за немалые деньги.

В итоге я перенес свой блог на , где мне помогли выявит и устранить данную проблему, за что я им очень благодарен. Ребята действительно работают очень качественно и быстро. Решение заключалось в бане самых активных IP адресов и фильтрации запросов к некоторым файлам WP.

Как видите, нагрузка на сервер сократилась почти в 2 раза, а блог стал заметно быстрее работать.

Вот скажите, смогли бы вы решить подобную проблему самостоятельно без посторонней профессиональной помощи? Лично я нет. Так что последуйте моему примеру — выбирайте действительно качественный хостинг, чтобы его техническая поддержка была способна решить проблемы любой сложности, а не оставляла бы вас наедине с ними.

В процессе работы над ускорением WordPress, блог нужно постоянно тестировать на предмет выявления проблемных мест. Пожалуй, самый интересный и полезный бесплатный сервис онлайн тестирования загрузки блога tools.pingdom.com . Именно благодаря ему я отследил подключение ненужной библиотеки JavaScript и выявил пару неоправданно тяжелых картинок.

А вот и результаты согласно сервису WebWait, которые показал мой блог в итоге:

Просто шикарные! Искренне желаю, чтобы и ваш блог работал так же быстро! Поверьте, этого добиться не так уж и сложно.

На этом на сегодня все. Если знаете другие способы ускорения WordPress, не стесняйтесь — оставляйте свои комментарии. Мои читатели и я будем вам очень признательны.

Спасибо, друзья, что дочитали мою статью до конца. Надеюсь, она действительно помогла ускорить WordPress и работу вашего блога. Берегите себя!

  • Перевод

Скорость и отказоустойчивость – одни из тех факторов, что неизменно влияют на популярность вашего ресурса, ведь даже с лучшим в мире контентом медленно работающий сайт будет раздражать читателей и рано или поздно вы их потеряете. В этой статье мы будем оптимизировать самый популярный блоговый движок - Wordpress, работающий на PHP. А заодно рассмотрим несколько общих моментов в оптимизации сайтов.

1 Тестируем текущую скорость

Чтобы узнать изменилось ли что-нибудь после нашей оптимизации, не помешает замерять для начала текущую скорость загрузки страниц блога, чтоб было с чем сравнивать. Есть несколько инструментов, которые помогут сделать это:

Не забудьте обновить до последней версии PHP и Apache .

3.1 Отключите неиспользуемые сервисы
Вы можете получить больше доступной оперативной памяти, отключив неиспользуемые службы и оптимизировав MySQL и Apache.
  • Удалите ClamD;
  • Настроить SpamD на использование только 1 дочернего процесса;
  • Удалите Mailman, если, конечно, вы не собираетесь запускать почтовый сервис.
3.2 MYSQL Query Cache
Поскольку стабильность и скорость Wordpress довольно сильно зависит от работы БД, стоит убедиться, что настройки в my.cnf соответствуют возможностям сервера. В первую очередь следует установить настройки кэширования запросов, добавив в my.cnf следующие строки:
query_cache_type = 1
query_cache_limit = 2M
query_cache_size = 20M

Чтоб настройки вступили в силу придется перезапустить сервис MySQL сервис.
3.3 Кэш компилятора: XCache или Eaccelerator?
Кэш компилятора увеличивает производительность откомпилированных скриптов на сервере, кэшируя их – это поможет сократить время выполнения PHP скриптов. Стоит попробовать и то и другое решение, однако по результатам опытов увеличение производительности при использовании Xcache на 5% выше, чем с Eaccelerator.
3.4 Увеличьте максимальное число соединений на Apache
Увеличение максимального количества соединений в httpd.conf повысит производительность, т.к. сервер сможет обрабатывать большее количество подключений за раз. Однако, следует изменять этот параметр осторожно, дабы не исчерпать весь объем оперативной памяти и не замедлить работу сервера, потому всегда тестируйте новые настройки прежде чем запускать их в работу. Установим к примеру 150 коннектов:
max_connections = 150

Не забудьте рестартить сервис Apache, чтоб применить настройки.

4 Оптимизация кода и графики

Итак, сервер заработал и теперь настало самое время поиграть с кодом Wordpress.
4.1 Отключите хотлинки
Каждый раз когда вы используете свой сервер для хранения изображений вы существенно больше используете его ресурсов. Довольно часто люди заимствуют ваши изображения, ставя хотлинки на своих серверах. Это не только занимает канал, но и создает определенную нагрузку на сервер.
Добавьте следующий код в .htaccess файл, заменив example.com на имя вашего домена, чтобы отключить использование хотлинков:
< IfModule mod_rewrite .c >
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/.*$
RewriteRule .*\.(gif|jpg|png|ico)$ -
4.2 Используйте внешний хостинг для хранения изображений
Хостинг изображений на внешних серверах поможет значительно снизить нагрузку на сервер. В примере ниже вы можете видеть снижение объема используемой оперативной памяти на одном из блогов после переноса изображений на сервис Amazon S3 .

4.3 Сжимайте java-скрипт код
Сжатие javascript довольно простая задача. Поскольку он выполняется при каждом просмотре страницы, вы можете уменьшить размер Javascript, удалив все незаполненное пространство. Вот простой инструмент, который поможет сделать это за вас - JavaScript Compressor .
4.4 Javascript в начале страницы
Часто случается так, что сайт начинает загружаться медленно или вообще останавливается, т.к. другой ресурс, с которого вызывается javascript(на пример Digg badges, Tweetmeme и т.д.), не доступен или оффлайн. Чтобы избежать этого вынесите весь javascript код в конец страницы, а то что по каким-то причинам вынести не удалось – попробуйте заключить в iFrame.
4.5 Используйте кэш браузера
Сам по себе кэш браузера, конечно не сделает ваш блог быстрее, однако поможет снизить нагрузку на сервер, кэшируя часто загружаемые объекты(стили, элементы интерфейса и т.п.).
Попробуйте вставить следующий код в .htaccess файл:
FileETag MTime Size
< ifmodule mod_expires .c >
< filesmatch "\.(jpg|gif|png|css|js)$" >
ExpiresActive on
ExpiresDefault "access plus 1 year"

4.6 Сжимайте статические данные
Вы можете уменьшить размер загружаемой страницы позволив браузеру принимать и передавать данные в сжатом виде. Это также снизит загрузку канала и количество загружаемых данных.
Следующий код в .htaccess может помочь вам в этом:
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0 no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
4.7 Используйте CDN для статических файлов
Если хранить все изображения на одном и том же домене, то браузер будет ожидать их загрузки одного за другим. Допустим на странице их у вас есть 12 штук, если вы разделите их между тремя поддоменами, они будут загружаться одновременно из трех «разных» источников вместо того, чтоб загружаться браузером по очереди из одного.
Можете попробовать перенести все css & javascript файлы на files.yoursite.com , а изображения и временные файлы на static.yoursite.com . Или же просто использовать CDN (Content Delivery Network) – большая сеть серверов, расположенных по всему миру, которые позволят не только хранить ваши файлы на разных поддоменах, а значит загружать их параллельно, но и доставлять пользователю данные с самого близкого к нему сервера. Все это позволит загружать данные намного быстрее.

5 Wordpress

В этой части статьи мы рассмотрим приемы для улучшения производительности, которые можно применить непосредственно к Wordpress.
5.1 Обновитесь до последней версии
Обновления до более новых версий позволяют не только устранять обнаруженные уязвимости, но и улучшают производительность. Для примера в wordpress 2.8 была существенно оптимизирована работа с БД.
5.2 Отключите Post Revisions
Во всех версиях wordpress, начиная с 2.6, редакции ваших статей каждый раз во время правки автоматически сохранялись. Это замедляет работу БД и увеличивает ее размер без особой надобности.
Чтоб отключить post revisions, добавьте следующую строку в wp-config.php :
define("WP_POST_REVISIONS", false);

Чтобы удалить сохраненные ранее ревизии текста, выполните следующий запрос в PHPmyadmin:
DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = "revision"
5.3 Сократите количество запросов
Уберите ненужные запросы, чтоб ускорить генерацию страницы. Например, следующий типичный код, встречающийся во всех темах для wordpress:
< meta http-equiv ="Content-Type" content ="< ?php bloginfo ("html_type" ); ?> ; charset= " />

Мы запросто можем переписать в:
< meta http-equiv ="Content-Type" content ="text/html; charset=UTF-8" />

Уже на два запроса меньше. Довольно просто, не правда ли?
6 Wordpress Plugins
И на последок предлагаю вашему вниманию несколько плагинов, которые могут повысить производительность wordpress. Как только все, описанное выше, будет выполнено, эти плагины помогут добиться еще более высокой производительности.

Фев 12

Как ускорить свой блог на WordPress?

Здравствуйте! В этой статье я расскажу вам о нескольких реально работающих способах по ускорению вашего блога на WordPress . Если у вас обычный сайт, то некоторые советы все равно могут пригодиться. Все способы проверял лично на своем блоге. Результат на лицо. Для начала давайте протестируем нынешнюю скорость загрузки сайта. У меня до начала эксперимента она была 5.59 s - это плохо! Тестировал я при помощи этого сервиса . Вводите название своего сайта и нажимаете "Test Now"

Запомнили результат? Ок, теперь начнем ускорять наш блог. Пристегните ремни, потому что после всех проделанных действия ваш блог будет просто летать! ;-) 1.WP File Cache: настраиваем кеширование на блоге. Однажды я уже писал статью про кеширование. Там я использовал плагин , но после того как переехал на другой хостинг он перестал работать. Мне подсказали использовать плагин WP File Cache, о котором сейчас и пойдет речь. Для начала скачайте его . После этого установите и активируйте его. Если вы не знаете как это сделать, то прочитайте вот . Установили? Теперь перейдем в настройки(Консоль --> Параметры --> WP File Cache). Сделайте как на картинке ниже:

Не забываем сохранять настройки. Итак, с кешированием мы разобрались. Идем дальше. 2.Оптимизируем css файлы. Оптимизация css файла - это тоже не маловажный этап в ускорении блога. Итак, чтобы уменьшить размер нашего файла со стилями сделайте следующие шаги: 1 - Заходим в Консоль --> Внешний вид --> Редактор . В правой колонке мы видим заголовок - "Стили" , под ним перечислены наши файлы со стилями(в моем случае их несколько). 2 - Нажимаем на style.css. 3 - Копируем все содержимое файла(Ctrl + A) 4 - Заходим на сайт www.csscompressor.com/ 5 - В поле CSS Input: вставляем то что скопировали и не изменяя никаких настроек жмем Compress. 6 - Далее из поля Compressed CSS: копируем то что получилось и вставляем в исходный файл(style.css) 7 - Сохраняем изменения. Ну вот и все, файл со стилями мы оптимизировали. Идем дальше. 3.Оптимизируем базу данных, при помощи плагина Optimize DB. Для начала скачайте сам плагин - скачать . Далее установите его и активируйте. После выше проделанных действий зайдите в настройки плагина(Консоль --> Инструменты --> Optimize DB) и нажмите на кнопку "Optimize Now". Ну вот и все, база данных оптимизирована. Советую проделывать данное действие примерно раз в неделю. 4.Авто-сохранение черновиков ваших записей. Разработчики позаботились о начинке своего движка и включили в него такую возможность, как авто-сохранение черновиков записей. Я не спорю, что это важная функция. Ведь действительно иногда бывают какие-то экстренные ситуации, например проблемы с электричеством, с компьютером или браузером. Но ведь эти черновики надо же где то сохранять? А сохраняются они в вашей БД каждую минуту. Представляете отсюда какая захламленность и нагрузка? Но согласитесь, отключение данной функции - это не выход. Значит будем чистить. Для этого в phpmyadmin вашего блога нужно задать следующий SQL запрос: Вот и все, мы вынесли мусор:). Теперь ваша БД намного чище.

5.Оптимизация шаблона. Чистим код. Теперь нам нужно уменьшить количество запросов к БД. Как это сделать? Очень просто, нужно лишь немного почистить наш код. 1.Открываем файл header.php и ищем строку заменяем её на: 2.Изменяем "title". Находим строчку: И меняем её на: 3.Информация о версии wordpress и keywords можете вообще убрать, т.к 1(версия) - с точки зрения безопасности не рекоминдуется указывать, а 2(ключевые слова) - т.к больше не используется поисковиками. 4.Путь к CSS. Ищем: Заменяем на: 5.Пингбеки. Находим: Меняем на: 6.Подведение итогов. Давайте снова проверим скорость загрузки сайта. Если вы проделали все что описано выше, то она должна снизиться как минимум в 2-3 раза. Если этого не произошло, то вы либо ничего не сделали, либо у вас не WordPress:). Не пренебрегайте этими советами. Даже если сейчас у вас и низкая скорость загрузки сайта, то рано или поздно она вырастет, вместе с ростом посещаемости. Так что лучше позаботиться об этом заранее. На этом я с вами прощаюсь. Не забывайте подписываться на обновления(ссылка ниже). С Уважением, Александр Сидоренко.

26 мая 2014 в 19:05

Ускоряем Wordpress

  • WordPress

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|ppt|tar|mid|midi|wav|bmp|rtf)$ { 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):

Php -i | grep apc

В версиях PHP после 5.5 есть встроенный модуль opCache, так что 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 (mean) Time per request: 56.742 (mean, across all concurrent requests) Transfer rate: 143.98 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 (mean) Time per request: 2.004 (mean, across all concurrent requests) Transfer rate: 4184.61 received

Cреднее ожидание ответа в Хроме уменьшилось в 3 раза:

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

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

Минификация и сжатие
Минификация CSS/JS может сэкономить 10...15% их размера. Для включения минификации статики есть модуль WP Minify . Качайте, активируйте и модуль начнет работать. Gzip позволит уменьшить размер текстовых файлов в несколько раз. В Nginx"e включается так:

Server { ... gzip on; gzip_disable "msie6"; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript; ... }

Оптимизация картинок
Картинки могут составлять очень большую часть общего размера страницы. 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:

WordPress – отличная CMS для сайта, но она довольно медленная из коробки, если ее не оптимизировать правильно. В этом руководстве, составленном KeyCDN, мы рассмотрим основные способы оптимизации и ускорения сайта на WordPress.

WordPress также одна из самых популярных CMS для сайтов компаний. Более половины сайтов, на которых можно определить систему управления контентом, работают на WordPress. А это более чем 74 миллиона сайтов.

По данным W3Techs , WordPress используется на 60% сайтов с известной CMS. Это 31,6% всех сайтов в мире.

Инструменты для измерения скорости сайта

Один из самых важных инструментов при работе над оптимизацией скорости сайта — тестировщики скорости загрузки (page speed tool). Мы рекомендуем проводить измерения перед началом работ по оптимизации, и в процессе, после каждого внесенного изменения. Это даст лучшее понимание, изменения каких параметров оказывают положительное или отрицательное влияние на производительность.

Есть много инструментов для проверки скорости загрузки сайта, среди которых KeyCDN, который предлагает тесты из 16 точек по всему миру.

Важность скорости работы сайта в 2018 году

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

Таким образом, если вы хотите увеличить органический трафик на сайт с десктопной и мобильной версии, вы должны уделить внимание правильной оптимизации сайта на WordPress.

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

Ограничение количества редакций записей в WordPress

Для того, чтобы ограничить количество редакций записей в WordPress, достаточно добавить следующий код в файл wp-config.php . Он изменит интервал автосохранения записей с 60 секунд до 5 минут и установит количество сохраняемых редакций до трех. Можно задать количество ревизий любым числом.

Define("AUTOSAVE_INTERVAL", 300); // seconds define("WP_POST_REVISIONS", 3);

Удаление старых редакций записей из базы данных WordPress

После отключения или ограничения количества редакций нужно почистить базу данных от старых сохраненных ревизий. Для этой цели можно временно установить плагин WP-Optimize .

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

Следите за ограничением на 100 страниц в WordPress

При планировании структуры сайта стоит помнить о том, что WordPress не был предназначен для работы с большим количеством страниц, больше 100. При наличии большого количества страниц на сайте в админке начнутся тормоза из-за нехватки памяти. Впрочем, на фронтенде это никак не отразится. Упоминание об этом ограничении есть в документации WordPress.

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

Решением этой проблемы может быть использование кастомных типов постов. Для этой задачи можно использовать бесплатный плагин Post Type Switcher , если нужно большое количество страниц конвертировать в пользовательские типы записей.

5. Оптимизация изображений с помощью сжатия

На современных сайтах в среднем 56% веса страниц составляют изображения. Следовательно, оптимизация изображения и их сжатие должны быть приоритетной задачей при ускорении сайта на WordPress.

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

6. Сжатие Gzip/Brotli

Gzip это еще одна технология сжатия, которая используется для сжатия страниц, стилей и скриптов на уровне сервера перед отправкой браузеру. Проверить, работает ли сжатие Gzip на сайте WordPress можно с помощью сервиса Check GZIP Compression .

Apache

Настроить сжатие на сервере Apache можно, добавив следующий код в файл.htaccess

# Compress HTML, CSS, JavaScript, Text, XML and fonts AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/vnd.ms-fontobject AddOutputFilterByType DEFLATE application/x-font AddOutputFilterByType DEFLATE application/x-font-opentype AddOutputFilterByType DEFLATE application/x-font-otf AddOutputFilterByType DEFLATE application/x-font-truetype AddOutputFilterByType DEFLATE application/x-font-ttf AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE font/otf AddOutputFilterByType DEFLATE font/ttf AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml # Remove browser bugs (only needed for really old browsers) BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0 no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html Header append Vary User-Agent

Nginx

Если вы используете веб-сервер Nginx, сжатие активируется путем включения следующих инструкций в файл настроек nginx.conf .

Gzip on; gzip_comp_level 2; gzip_http_version 1.0; gzip_proxied any; gzip_min_length 1100; gzip_buffers 16 8k; gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript; gzip_disable "MSIE .(?!.*SV1)"; gzip_vary on;

Кроме этого, можно также внедрить технологию сжатия Brotli на WordPress. Brotli это новый алгоритм сжатия, разработанный Google. Brotli показывает значительное преимущество перед Gzip при сжатии файлов.

7. Уменьшение количества плагинов WordPress

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

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

При установке новых плагинов на сайт с WordPress следует обратить внимание на дату последнего обновления плагина и на совместимость с текущей версией WordPress. Если плагин давно не обновлялся, вы увидите следующее предупреждение:

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

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

8. Оптимизация производительности веб-шрифтов

По данным исследований, в 2018 году 57% сайтов используют не стандартные шрифты, это рост на 850% по сравнению с 2011 годом. Очень важно использовать только те шрифты, которые нужны, в форматах WOFF и WOFF2. Сервисы типа Typekit base64 преобразуют шрифты во все возможные форматы, замедляя тем самым скорость загрузки сайта.

По результатам тестов, шрифты Google показывают хороший уровень производительности, потому что используют CDN для загрузки и предоставляются только в форматах WOFF. Open Sans — самый быстрый из 10 популярных шрифтов.

Важно также помнить о разнице между шрифтами Google и безопасными веб шрифтами, она может достигать 200 мс. Это преимущественно из-за скорости загрузки и дополнительных HTTP запросов к серверам Google.

Еще одной возможностью оптимизации может быть перемещение шрифтов Google на вашу CDN. В сравнительных тестах загрузка шрифтов из своей CDN происходит быстрее, чем из Google, потому что производится меньше HTTP запросов, поисков DNS, и дает больший контроль над кэшированием.

Можно пойти еще дальше и поместить все шрифты в отдельный css файл и хранить их в localStorage. Браузерный кэш сбрасывается довольно часто, особенно на мобильных устройствах. А сохраняя файлы в localStorage, можно хранить их у пользователя постоянно. Smashing Magazine сэкономили 700 мс при загрузке страницы с помощью localStorage .

Рекомендуем использовать сервис localFont tool от Jaime Caballero. Можно перетащить свой шрифт в окно и конвертировать его в CSS и Javascript для размещения на сайте WordPress.

9. Оптимизация иконок Font Awesome

Если вы используете Font Awesome, можно ускорить их загрузку, поместив файлы на CDN. Если вы используете тему WordPress с Font Awesome, ее придется немного доработать.

Хранение Font Awesome на своей CDN уменьшит количество запросов к серверу и поисков DNS.

10. Lazy Load для изображений, видео и Disqus

Lazy loading – это технология загрузки объекта только в тот момент, когда он нужен. В случае WordPress это означает, что элемент не загружается до тех пор, пока пользователь не прокрутит страницу до него. Lazy load можно применить для любых элементов страницы, от изображений и видео, до блока комментариев Disqus.

Отложенная загрузка изображений

Для отложенной загрузки картинок на сайте WordPress можно использовать хороший бесплатный плагин BJ Lazy Load . Он заменяет все изображения, ярлыки и фреймы на странице плейсхолдерами и загружает контент по мере приближения его к границе окна при прокрутке пользователем. Это также работает и для текстовых виджетов. Если вы пользуетесь плагином WP Rocket, в нем есть настройки для включения Lazy Load.

Отложенная загрузка видео

Для отложенной загрузки видео на WordPress можно использовать бесплатный плагин Lazy Load for Videos . Он заменяет встроенное видео Youtube и Vimeo кликабельным изображением превью. Если у вас на сайте много видео, этот плагин поможет значительно улучшить скорость загрузки страниц.

Отложенная загрузка Disqus

Disqus – это очень удобная система комментирования, которая очень хорошо борется со спамом. Но стандартный плагин Disqus создает более 10 HTTP запросов, которые могут значительно замедлить загрузку страницы. Чтобы решить эту проблему, разработчик James Joel сделал плагин Disqus Conditional Load , который откладывает загрузку Disqus. Он в том числе не вредит SEO, то есть поисковые системы все равно могут индексировать комментарии.

11. Минификация и объединение CSS и Javascript файлов

Минификация и объединение файлов стилей и скриптов может сыграть значительную роль в ускорении сайта на WordPress.

Минификация

Минификация файлов означает удаление лишних символов из файлов HTML, Javascript, и CSS, таких как:

  • Пробелы
  • Переносы строки
  • Комментарии
  • Разделители блоков

Эта оптимизация уменьшает количество загружаемого кода и положительно влияет на скорость сайта.

Объединение (конкатенация)

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

Для минификации и конкатенации файлов в WordPress можно использовать плагины, например, WP Rocket

Большинство плагинов кэширования для WordPress имеет настройку для включения этих функций, но можно также использовать отдельные плагины, такие как Better WordPress Minify и Autoptimize . Хорошей практикой в WordPress считается размещение файлов стилей вверху страницы, а файлов скриптов снизу.

12. Уменьшение количества HTTP запросов

Уменьшение количества HTTP запросов, которые делает сайт на WordPress в момент загрузки, очень важно для оптимизации скорости.

Рассмотрим несколько важных способов по уменьшению количества запросов к серверу.

Граватары

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

Есть несколько способов решения этой проблемы.

Вариант 1 — отключить граватары

Можно просто отключить все граватары пользователей, и использовать локальные аватары. Не идеальное решение, но рабочее.

Для этого нужно установить бесплатный плагин WP User Avatar . И в настройках включить опцию «Отключить Граватары и использовать только локальные аватары»

Вариант 2 – использовать Disqus

Можно использовать комментарии Disqus вместе с плагином lazy load Disqus . Кажется странным, что подключать дополнительный плагин, скрипты, делать вызов к сторонним сервисам предпочтительнее использования родного функционала. Но если сравнить скорость на записи с 5 или более комментариями, окажется, что Disqus быстрее из-за меньшего количества HTTP запросов.

Отключение Emoji

С выходом WordPress 4.2 появилась поддержка Emoji. Это привело к добавлению лишнего скрипта wp-emoji-release.min.js?ver=4.3.1 в хедере. Этот скрипт создает дополнительный HTTP-запрос, от которго нужно избавиться, если вы не собираетесь использовать Emoji.

В инструкции ниже покажем, как отключить Emoji и избавиться от лишнего HTTP запроса.

В настройках «Написание» отключите “convert emoticons”.

Вариант 1 – WordPress плагин

Установите бесплатный плагин для WordPress “Disable Emojis ” by Ryan Hellyer. Этот плагин отключает функционал emoji в WordPress 4.2.

Вариант 2 – функция WordPress

Чтобы не перегружать сайт лишними плагинами, можно избавиться от emoji путем добавления в functions.php следующего кода:

/** * Disable the emoji"s */ function disable_emojis() { remove_action("wp_head", "print_emoji_detection_script", 7); remove_action("admin_print_scripts", "print_emoji_detection_script"); remove_action("wp_print_styles", "print_emoji_styles"); remove_action("admin_print_styles", "print_emoji_styles"); remove_filter("the_content_feed", "wp_staticize_emoji"); remove_filter("comment_text_rss", "wp_staticize_emoji"); remove_filter("wp_mail", "wp_staticize_emoji_for_email"); add_filter("tiny_mce_plugins", "disable_emojis_tinymce"); } add_action("init", "disable_emojis"); /** * Filter function used to remove the tinymce emoji plugin. * * @param array $plugins * @return array Difference betwen the two arrays */ function disable_emojis_tinymce($plugins) { if (is_array($plugins)) { return array_diff($plugins, array("wpemoji")); } else { return array(); } }

Отключение скриптов на странице

Обычно мы стараемся избавиться от лишних плагинов, но есть один плагин Gonzalez , который позволяет отключать неиспользуемые скрипты на уровне страницы или всего сайта. Например, плагин Contact Form 7 загружает свои скрипты на всех страницах сайта, а не только на той, где используются формы. То же самое с плагинами шаринга в соцсети. Отключив ненужные на данной странице скрипты, можно избавиться от нескольких лишних HTTP запросов. Плагин не бесплатный, но своих денег стоит.

Отключаем Embeds

С версии 4.4 в WordPress загружается новый скрипт wp-embed.min.js , который позволяет упростить вставку видео, изображений, твитов, и т.п. Например, WordPress автоматически преобразует URL в YouTube вставку и сделает превью в визуальном редакторе. Но не всем нужна подобная функция, можно просто скопировать готовый код для вставки с YouTube или Twitter. Проблема с этой функцией в том, что она загружает свой скрипт на каждой странице. Есть несколько способов избавиться от него.

Вариант 1 – WordPress плагин

Установите WordPress плагин “Disable Embeds ” by Pascal Birchler. Он делает следующее:

  • Предотвращает других от вставки вашего сайта.
  • Не дает вам вставить сайты не из разрешенного списка.
  • Отключает все скрипты, связанные с этой функцией.

Вариант 2 – функция WordPress

Можно добавить следующий код в файл functions.php, это отключит функцию вставки.

// Remove WP embed script function speed_stop_loading_wp_embed() { if (!is_admin()) { wp_deregister_script("wp-embed"); } } add_action("init", "speed_stop_loading_wp_embed");

Отключаем комментарии

Независимо от того, используете вы или нет систему комментариев WordPress, скрипт comment-reply.min.js подключается на каждой странице сайта. Это не всегда оправдано, на сайте могут быть не нужны комментарии вообще или подключен Disqus. Тогда можно отключить этот ненужный скрипт.

Для этого можно добавить следующий код в файл functions.php .

// Remove comment-reply.min.js from footer function comments_clean_header_hook(){ wp_deregister_script("comment-reply"); } add_action("init","comments_clean_header_hook");

13. Отключение хотлинков

Хотлинкинг это когда кто-то использует изображения с вашего сайта, ссылаясь на них. Это создает ненужную нагрузку на сервер и лишний трафик. Запретить подобные вещи можно, добавив следующий код в файл.htaccess:

RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com RewriteRule \.(jpg|jpeg|png|gif)$ –

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

14. Отключение Pingback и Trackback

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

Отключить pingback и trackback можно в настройках обсуждения. Это изменение коснется только новых записей.

15. Задание размеров изображений

Optimization suggestion: “By compressing and adjusting the size of … you can save 5.8 KB (51%).”

Эти рекомендации относятся к изображениям на сайте, которые масштабируются браузером. Например, если изображение имеет ширину 500 пикселей, а на странице помещено в колонку шириной 400 пикселей. В результате оно будет уменьшено до 400 пикс.

Правильным решением будет подготовка изображений нужного размера в графическом редакторе перед загрузкой на сайт. Это сэкономит ресурсы сервера и будет соответствовать рекомендациям Google Pagespeed. Еще можно загрузить на сайт изображения в разных размерах для разных устройств.

16. Решение проблемы медленной загрузки admin-ajax.php

В WordPress 3.6 бал представлен WordPress Heartbeat API , который позволил WordPress общаться с сервером и браузером. Это улучшило управление сессиями, контроль ревизий и автосохранение.

WordPress Heartbeat API использует admin-ajax.php для AJAX запросов из браузера. Это может привести к повышенной нагрузке на процессор и большому количеству вызовов PHP. Например, если оставить открытой страницу с админкой, она будет посылать POST запросы к этому файлу постоянно с заданным интервалом.

Существует бесплатный плагин Heartbeat control , который позволяет задать частоту обращений WordPress heartbeat API.

Стоит помнить, что разработчики других плагинов тоже используют этот файл. Если вы заметили задержки в работе сайта, это может быть вызвано плагином, который запрашивает admin-ajax.php . Чтобы разобраться, в чем дело, нужно запустить тестирование скорости загрузки сайта, найти вызов admin-ajax.php и посмотреть информацию о запросе.

Таким образом можно вычислить, какой плагин выполняет запрос. В этом примере это был плагин соцсетей, для которого не было включено кэширование. Как только кэширование плагина активировали, постоянные обращения к admin-ajax.php прекратились.

17. Настройка MySQL сервера

Оптимизация работы сервера баз данных MySQL также очень важна для быстрой работы сайта на WordPress. Настройки MySQL в большой степени зависят от конфигурации серверного окружения на вашем хостинге, поэтому нет универсальных рекомендаций по оптимизации MySQL. Обычно настройки MySQL/MariaDB находятся в файле /etc/my.cnf . Вот несколько параметров, на значение которых стоит обратить внимание:

  • tmp_table_size
  • query_cache_type
  • query_cache_size
  • query_cache_size
  • join_buffer_size
  • max_heap_table_size

Очень полезный инструмент — скрипт MySQL Tuner . Он делает обзор производительности сервера и дает некоторые базовые рекомендации по возможной оптимизации. Вот еще несколько инструментов, которые могут пригодиться при настройке MySQL:

18. Выбор качественного хостинга для WordPress

И последний, но немаловажный фактор оптимизации сайта на WordPress — выбор надежного производительного хостинга. Не рекомендуем использовать дешевые шаред хостинги, которые забиты сайтами. Лучшим решением будет использовать VPS или WordPress хостинг с поддержкой.

Надеемся, наше руководство поможет вам улучшить показатели скорости вашего сайта.

Оригинал статьи — https://www.keycdn.com/blog/speed-up-wordpress/