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

Ускорение сайта на WordPress — задача довольно сложная и нетривиальная, например, если требуются хорошие результаты для PageSpeed Insights. Причин для возникновения сложностей довольно много:

Еще куча всякой мелочёвки, которою рассмотрим в процессе. Итак, пора перейти к делу. В данной статье мы рассмотрим ускорение для ПК, а также оптимизацию WordPress для мобильной версии сайта. Кстати, рекомендую не концентрироваться только на PageSpeed Insights, лучше замерять с помощью GTmetrix или Pingdom Tools.

Начало ускорения

Оптимизация WordPress начинается с теста скорости. Тут все довольно просто, есть такие инструменты, как PageSpeed Insights от Google, также Pingdom Tools, GTmetrix. Рекомендую использовать все, они покажут, какие слабости есть у сайта. Но это только рекомендации, реальная скорость сайта рассчитывается иначе, например, в этой статье рассказываю об этом.

К сожалению, вы запросто можете оказаться в ситуации, что от вас требуют высоких результатов в данном тесте, не понимая даже, что он собой представляет. Конечно, можно улучшить сильнее, но тогда пострадает дизайн. В целом, в мобильной версии у меня от 60 до 64, в ПК от 87 до 93. Когда как. Но в основном проблема заключается в партнерках, рекламе, счетчиках и частично с файлами js и css. В общем, многое исправить будет нелегко, да и не нужно. А на некоторые вещи вроде рекламы вы повлиять вообще не сможете.

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

Могу с уверенностью сказать, что в мобильной версии высокие результаты часто идут во вред пользователям. Отложенная загрузка всего и вся и чуть ли не голая HTML-страница — единственный путь к заветной сотне. И да, разработчиками инструмента является не Google, а другая компания, так что не ждите от него идеальных результатов, он не замеряет скорость, а ищет потенциально-слабые места в сайте.

Тест PageSpeed Insight
Ускорение сайта WordPress
GTmetrix тест
Версия GTmetrix на скриншоте устарела, теперь GTmetrix работает на основе данных PageSpeed Insight
Pingdom Tools тест

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

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

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

Тест сайта без рекламы
Тест сайта без рекламы

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

Тест сайта с рекламой
Тест сайта с рекламой

Так что, если у вас на сайте реклама, то скорость будет на порядок ниже. И ничего с этим поделать не сможете.

Ускорение WordPress без плагинов

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

Хостинг

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

Вот, например, сводная таблица тестирования разных хостингов:

Тест


 

Хостинг

Reg.ru

Fozzy

Sprinthost

Макхост

Begget

PS Insight Mobile

28

26

26

21

29

PS Insight PC

72

65

71

71

73

GTmetrix Perfomance

62

61

65

60

66

P-Tools

63

64

65

61

65

Скорость загрузки страниц

LCP

2,6 сек.

2,7 сек.

2,5 сек.

2,8 сек.

2,5 сек.

TBT

2,01 сек.

2,16 сек.

1,97 сек.

2,24 сек.

1,92 сек.

Стоимость за месяц

329 р.

5 $.

279 р.

279 р.

320 р.

К выбору хостинга стоит отнестись серьёзно. Простые сайты размещал на Reg.ru, вполне хватало. Конечно, ходят легенды о том, какой хостинг плохой. Но на деле он такой же как все. Но есть несколько но:

  1. Он довольно дорогой по меркам хостинг-провайдеров.
  2. Здесь выделяется не особо много CP. Хоть и не стоит хостинг выбирать по этому параметру, но в данном случае и по оборудованию они не превосходят аналоги.

В общем, вот пара скриншотов для сравнения.

Хостинг Reg.ru
Ресурсы, которые предоставляет Reg.ru

Честно говоря не впечатляет. Одни и те же сайты у меня шустрее работают на Бегет.

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

Хостинг Макхост
Предложение от Макхост.

У Рег.ру: https://www.reg.ru/hosting/ я беру тариф Host-0, на сайты с большой посещаемостью тарифы повыше. На первое время «нуля» хватит. Ежемесячная оплата — 329 рублей. Стоит заметить, что многие хают хостинг от Рег, рассказывают про мифические проблемы, но у меня никаких проблем практически не возникало. А те, что были, быстро разрешались поддержкой. И да, здесь есть ISP Manager. Очень люблю данную панель управления. Веб-сервер используется Apache+Nginx, что дает неплохую скорость. Если решитесь брать, то держите промокод на скидку: 8404-F30B-D292-4306

Есть еще один интересный хостинг: https://fozzy.com/. Fozzy интересен тем, что использует веб-сервер LiteSpeed. Соответственно, это отличное кеширование, шустрое реагирование на запросы. Данный хостинг способен обеспечить максимальную производительность на ресурсах с большим количеством повторных посещений. В общем, если рассчитываете, что к вам будут возвращаться люди, то он быстрее любой другой связки. Но для новых посетителей Apache+Nginx будет пошустрее. Из панелей есть cPanel, ISP и DirectAdmin. Все вполне удобны. Цена за месяц на тариф «5 быстрых сайтов» — 5 долларов, короче, самый дешевый вариант. Если решите, что вам данный хостинг подходит больше, то вот промокод на скидку: 0f42e170-1599-4410-8934-83f003aa61df

Кстати, когда-то сидел на McHost, но в итоге я с Макхоста переехал на Fozzy. Производительность чуток получше оказалась, а цена на 50 рублей ниже. К тому же панель DirectAdmin мне больше нравится, чем самописная панель на Макхост. А с Макхоста переехал в итоге на Бегет, так на нём и остался.

У Макхост за 249 рублей я покупал тариф Мак-10. Это 12,5% мощности ядра (очень абстрактно, учитывая, что не указано, что у них за процессоры в оборудовании), 300 000 файлов. В целом, Макхост мне показался не идеальным, но интересным. Единственное, по чему скучаю, — ISP Manager, очень нравится данная панель, но здесь она платная — 290 рублей в месяц. Вроде недорого, но жаба душит. В общем, решил от данного хостинга отказаться.

Ладно, с хостингом определились, на самом деле выбирайте любой наиболее удобный, где есть поддержка последних версий PHP, Apache+Nginx в качестве веб-сервера или LSAPI. Не обязательно выбирать то, что предложил я. По крайней мере, наиболее шустрый вариант для первоначальной загрузки — Apache + Nginx. А вот если есть постоянные посетители (причем много), то эффективней окажется LSAPI, ибо он значительно ужимает байты при повторной загрузке и лучше подходит для формирования статического кеша. В любом случае, чистый Apache проигрывает обоим вариантам.

Ускорение сайта на WordPress: тест веб-серверов
Тестирование сделано не мной. Откуда скрин, вспомнить не получается.

Настройка .htaccess

Сначала необходимо активировать сжатие. Это позволит сократить количество передаваемых данных. Причем многократно. Отвечает за это модуль Apache mod_deflate. В корне сайта должен располагаться файл .htaccess. В него и внесем изменения. Возьмите за правило: пользовательский код можно вносить только после # END WordPress, то, что находится в WP-блоке, CMS может затереть при обновлении.

Итак, добавляем следующее содержимое:

# сжатие text, html, javascript, css, xml:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css text/javascript text/xml text/plain image/x-icon image/svg+xml application/rss+xml application/javascript application/x-javascript application/xml application/xhtml+xml application/x-font application/x-font-truetype application/x-font-ttf  application/x-font-otf application/x-font-opentype application/vnd.ms-fontobject font/ttf font/otf font/opentype
# Совместимость с устаревшими браузерами
  BrowserMatch ^Mozilla/4 gzip-only-text/html 
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>

Это директивы для активации gzip-сжатия при ответе сервера. Также есть директива DeflateCompressionLevel отвечает за степень компрессии по шкале от 1 до 9. Чем выше уровень, тем сильнее нагрузка на процессор как сервера, так и клиента. Но сейчас любой компьютер или смартфон, даже слабенький, справится с задачей, так что можно не переживать и ставить высокий уровень. В .htaccess нельзя данную переменную размещать. Только в конфигурации Apache. Так что уточняйте у хостера степень компрессии, если что, просите выставить уровень повыше.

Теперь необходимо включить кеширование на уровне браузера. Для примера выкладываю код с секундами, часами и даже месяцами, выбирайте удобную единицу измерения. Итак, будем редактировать модуль mod_expires.c, внося изменения в тот же файл .htaccess, добавляем эти строки после тех, что были выше.

# кеш браузера: разрешаем истечение срока 
<ifModule mod_expires.c>
ExpiresActive On
#по умолчанию кеш в 5 секунд
ExpiresDefault "access plus 120 minutes"
# Включаем кэширование изображений и флэш на месяц
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType image/jpeg "access plus 4 weeks"
ExpiresByType image/png "access plus 30 days"
ExpiresByType image/gif "access plus 43829 minutes"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
# Включаем кэширование css, javascript и текстовых файлов на одиннадцать часов
ExpiresByType text/css "access plus 11 hours"
ExpiresByType text/javascript "access plus 11 hours"
ExpiresByType application/javascript "access plus 11 hours"
ExpiresByType application/x-javascript "access plus 11 hours"
# Включаем кэширование html и htm файлов на 2 часа
ExpiresByType text/html "access plus 120 minutes"
# Включаем кэширование xml файлов на десять минут
ExpiresByType application/xhtml+xml "access plus 600 seconds"
 
# Нестандартные шрифты сайта 
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
</ifModule>

Отлично, кеширование на уровне браузера задано. Учтите, если у вас нет форм обратной связи, то все значения, где у меня стоит по 11 часов, можете заменить на более продолжительный срок. Просто некоторые плагины могут негативно реагировать на длительное кеширование. Например, Caldera Forms, где токен рассчитан на 12 часов, соответственно, токен тоже кешируется и закешированная страница с формой обратной связи попросту не срабатывает спустя этот срок. У плагина Contact Form 7 такой проблемы нет.

Версия PHP и обновление WP

Хотя в требованиях версия указана не ниже 7.4, но лучше для WordPress использовать последнюю версию PHP. Если какие-то плагины не работают, например, давно не обновлялись, то лучше найти «свежие» аналоги. По сети гуляет множество тестов, которые наглядно демонстрируют, насколько выше производительность у последней версии. Между 7.4 и 8.1 разница будет 2-3% по PSI. Тоже неплохо. Мы сейчас бьёмся за каждый процентик. У меня есть обзор сравнения PHP 7.4 и 8.0 для WordPress.

Потому лучше обновить WP и плагины. Если есть серьезно устаревшие, которые давно не актуализировались, то заменить на другие. Но учтите, существуют плагины, которые не обновлялись по несколько лет, а с кодом у них все в порядке. Смотрите внимательнее. Кстати, актуальная версия WordPress работает стабильнее и шустрее, чем предыдущая ветка, потому рекомендую не откладывать переход. Если у вас версия 4 с копейками, то самое время задуматься о переходе на 5.9.x. Чем дольше ждете, тем сложнее будет обновиться. Особенно при выходе 6-ой версии, с четвёрки на неё будет трудно перейти.

Контент

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

Ускорение сайта WordPress
Картинки, картинки и еще раз медиафайлы

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

  1. Заранее сжимать изображения.
  2. По возможности конвертировать их в WebP. Например, с помощью плагина WebP Express.
  3. Не использовать изображения с большим разрешением, если в этом нет необходимости.
  4. Не загружать на страницы видеоконтент. По крайней мере, нужно сделать так, чтобы загрузка видеоконтента начиналась только по запросу пользователя, а не вместе с загрузкой страницы.
  5. Сделать отложенную загрузку изображений.

Так что, позаботьтесь, чтобы на страницах не было ничего «тяжеловесного», особенно изображений. И дополнительно рекомендую воспользоваться функциями ленивой загрузки (Lazy Load), кликайте по ссылке, там все подробно описано.

CDN

Сеть доставки контента. Фактически, весь статический контент размещается на сторонних серверах, а посетителю выдается из наиболее близкой к нему точки. Можно отправлять посредством CDN:

  1. Статические файлы: HTML, JS, CSS.
  2. Изображения, видеоконтент.
  3. Разнообразные файлы, например, текстовые, PDF.

Система проста: ваш контент дублируется на множество разных серверов и при запросе к сайту, все ресурсы выдаются пользователю с наиболее близкого по местонахождению. Значительно сокращает пинг, но удовольствие недешевое. Подойдет только крупным площадкам, способным окупать такие затраты (если в CDN вообще будет смысл), а также организациям, желающим плотно застолбить регионы. Если желает двигаться по Европе и США, то вам подойдёт бесплатный CDN от Fozzy или Cloudflare.

Ускорение сайта WordPress на уровне Back-end

Теперь пришло время улучшить работу WP, для этого понадобятся минимальные знания, ибо я предоставлю готовые решения, способные значительно упростить жизнь. Начнем, конечно же, не с самого простого.

Выбор темы

Это ключевой момент. На самом деле движок WordPress довольно-таки шустрый. Его ругают за то, что из «коробки» ничего нет, но я считаю это правильным. Такой подход дает большую вариативность последующей кастомизации. Поставил плагин для SEO какой нужно, добавил функционал, который необходим именно для целевого проекта.

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

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

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

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

Плагины

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

Плагины WordPress

Если нужна только одна функция и плагина под нее нет, то тогда есть смысл создать нужный код самому. На самом деле, не важно, куда внесете код. В виде плагина или в functions.php он будет требовать одинаковое количество ресурсов. Перебарщивать с плагинами тоже не стоит. Чем их больше, тем больше ресурсов потребуется на работу, что может заметно замедлить сайт.

Но возьмите за правило:

  1. Тот код, что влияет на тему, например, дизайн, стили, файлы темы, вносите в файлы дочереней темы. Предварительно дочернюю тему создайте.
  2. То, что не относится к функционалу темы, лучше вносите в кастомный плагин. Например, счётчики, функционал для асинхронной и отложенной загрузки, всякие SEO-фишки или API. Можете почитать о том, как создать собственный плагин.

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

Оптимизация JS и CSS

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

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

Отложенная и асинхронная загрузка JS

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

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

Оптимизация CSS

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

Оптимизация HTML

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

Перенос скриптов в подвал

Да, убрать скрипты из head и перенести в подвал тоже можно. Достаточно добавить в файл functions.php или кастомный плагин такой код:

if(!is_admin()){ 
remove_action('wp_head', 'wp_print_scripts'); 
remove_action('wp_head', 'wp_print_head_scripts', 9); 
remove_action('wp_head', 'wp_enqueue_scripts', 1); 
add_action('wp_footer', 'wp_print_scripts', 5); 
add_action('wp_footer', 'wp_enqueue_scripts', 5); 
add_action('wp_footer', 'wp_print_head_scripts', 5); 
}

Фактически все скрипты, расположенные в разделе head будут отключены и подключатся заново в разделе footer. Ничего сложного. Но не всегда это хорошо влияет на сайт. Используйте с осторожностью.

Плагины для ускорения WordPress

Этим «исчадиям ада» решил посвятить отдельную статью. Там много сложных настроек, к которым стоит ответственно относиться, потому, переходите по ссылке в заголовке и вникайте. Функционал попросту огромен, лично я использовал PageSpeed Ninja, но он плохо работал с PHP 7.4, а с 8.0 вообще не работал, так что поставил вместо него Autoptimize. Он оказался стабильнее, а также сейчас показывает результаты даже получше.

Полетели!

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

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 4.2 / 5. Количество оценок: 24

Оценок пока нет. Поставьте оценку первым.

Если материалы с данного сайта были полезны, и вы желаете поддержать блог, то можете воспользоваться формой по ссылке: Донат на поддержку блога