Скорость загрузки веб-сайта сегодня имеет критическое значение: она влияет на пользовательский опыт, конверсию и даже на позиции в поисковой выдаче Google. Но как же можно ускорить сайт на WordPress? Помимо использования качественного кэширования, существует множество других, зачастую недооцениваемых факторов, способных существенно повысить скорость работы вашего ресурса. В этой статье приведена подробная чек-лист для оптимизации WordPress.
1. Измеряем производительность WordPress
Перед тем как приступить к оптимизации, необходимо провести анализ текущей скорости сайта и выявить "узкие места". Для этого отлично подойдут следующие онлайн-инструменты:
- keycdn Tools
- GTmetrix
- Google PageSpeed Insights
- WebPageTest
- Website Speed Test от keycdn
Эти сервисы позволяют не только оценить общее время загрузки, но и увидеть количество запросов и размер страницы. При помощи "водопадного" графика можно проанализировать, какие файлы и элементы загружаются дольше всего, что поможет определить точки для оптимизации.
Есть сервисы, которыми я пользуюсь постоянно:
- Pingdom: проводит быстрое и наглядное тестирование скорости загрузки всех элементов на странице и представляет результаты в виде удобной диаграммы, где можно посмотреть, какие элементы сайта загружаются медленнее чем необходимо и прочие проблемные области.
- YSlow: плагин для Firefox, который встраивается в, пожалуй лучший плагин для веб разработчика, Firebug. Он анализирует более 20 факторов, которые влияют на скорость работы сайта и оценивает общую производительность по 100 бальной системе, а каждый отдельный элемент оценкой от A до F.
Также не забудьте про одну из важных вещей, которая может повлиять на скорость вашего сайта - количество запросов к базе данных и время их выполнения. Чтобы вывести эту информацию в футер, можно использовать следующий PHP код:
<?php echo get_num_queries();?> queries in <?php timer_stop(1);?> seconds.
2. Чек-лист: как ускорить WordPress
Ниже приведены основные рекомендации, выполнение которых обычно даёт значительный прирост производительности:
1. Компрессия изображений
Многие пользователи WordPress загружают слишком большие изображения, что существенно замедляет загрузку страницы.
- При подготовке изображений для публикаций старайтесь создавать их сразу в нужном размере и сохранять в оптимизированном для веба формате.
- Для лучшей компрессии используйте онлайн-сервисы, такие как TinyPNG или compressor.io.
- Рекомендуется также воспользоваться плагином Imagify для оптимизации изображений прямо в WordPress. Этот инструмент не только сжимает изображения, но и позволяет конвертировать их в формат WebP.
2. Ленивый (отложенный) загрузчик изображений (Lazy Load)
С помощью Lazy Load изображения подгружаются только тогда, когда посетитель прокручивает страницу до их области. Это особенно полезно для фотогалерей и видеосайтов.
- WordPress уже обладает встроенной поддержкой отложенной загрузки, но иногда специализированные плагины могут дать ещё лучшее качество работы.
- Многие кэш-плагины, например WP-Rocket, имеют функцию Lazy Load, которую можно активировать одним кликом.
3. Проверка и оптимизация плагинов
WordPress предлагает огромное количество плагинов, однако многие из них негативно влияют на скорость работы сайта.
- Удалите неиспользуемые плагины – это повысит как производительность, так и безопасность вашего сайта.
- Для оставшихся инструментов ищите более лёгкие и эффективные альтернативы или используйте загрузку плагинов только там, где это необходимо.
4. Очистка базы данных
Со временем база данных насыщается данными: черновики, ревизии, спам-комментарии, удалённые записи – всё это замедляет выполнение запросов.
- Рекомендуется регулярно очищать базу данных с помощью плагинов вроде Advanced Database Cleaner, который помогает убрать "подвальные" данные и оптимизировать таблицы.
- Для уменьшения количества записей можно ограничить число сохраняемых ревизий, добавив в wp-config.php следующий код:
define('WP_POST_REVISIONS', 3);
5. Сокращение количества подключаемых шрифтов
Использование веб-шрифтов открывает большие возможности для типографики, но при этом добавляет дополнительные серверные запросы, что ухудшает скорость.
- Ограничьтесь несколькими необходимыми шрифтами или используйте локальное подключение, чтобы избежать загрузки шрифтов с внешних серверов (например, с Google), что также соответствует требованиям DSGVO.
6. Селективная загрузка скриптов и стилей
Многие плагины загружают свои JavaScript и CSS файлы на всех страницах сайта, даже если они там не нужны.
- Используйте Conditional Tags в WordPress, чтобы ограничить загрузку ненужных файлов только нужными страницами. Например, для отключения скриптов Contact Form 7 на всех страницах, кроме страницы «Контакты», можно добавить в functions.php следующий код:
// Загружаем скрипты Contact Form 7 только на странице контактов
function remove_cf7() {
if (!is_page('kontakt')) {
wp_deregister_script('contact-form-7');
wp_dequeue_style('contact-form-7');
}
}
add_action('wp_enqueue_scripts', 'remove_cf7');
Если не хочется править код, попробуйте плагин Asset CleanUp, который сканирует сайт и позволяет отключать неиспользуемые скрипты и стили на уровне отдельных страниц.
7. Сжатие кода
CSS- и JavaScript-файлы часто содержат лишние пробелы, переносы строк и комментарии, увеличивающие объём файлов.
Используйте онлайн-инструменты, такие как cssminifier.com или minifier.org, для сжатия кода вручную или воспользуйтесь функциями вашего кэш-плагина, который может делать это автоматически.
8. Использование кэш-плагина
Применение кэширования – один из наиболее эффективных способов ускорить работу WordPress.
К примеру, плагин WP Rocket позволяет не только кэшировать страницы, но и объединять и сжимать файлы CSS и JS, обеспечить Gzip-компрессию, оптимизировать изображения, реализовать отложенную загрузку скриптов, предзагрузку кеша и работу с CDN.
Помимо WP Rocket, существуют и другие инструменты, такие как WP Fastest Cache и Swift Performance, однако оцените их возможности, исходя из ваших задач. Лично я отдаю предпочтение WP Rocket за простоту использования и эффект.
Рекомендуется использовать плагин W3 Total Cache и включить следующие опции:
- Page Cache,
- Database Cache,
- Object Cache,
- Browser Cache.
Внимание: опцию Minify не включаем, так как на моих сайтах она в 80% случаях глючила.
При включении галочек выбираем метод кеширования. Лучше выбирать тот, который предоставляется сервером. Если это не доступно, то тогда выбираем Disc:Enchanced.
9. Обновление версии PHP
Если на сервере работает устаревшая версия PHP, обновление принесёт только плюсы: устранение ошибок безопасности, улучшенную совместимость с последними версиями WordPress, плагинов и тем, а также повышение общей производительности.
10. Хостинг
Выбор подходящего тарифного плана для хостинга имеет огромное значение для скорости загрузки сайта.
В условиях Shared Hosting, когда несколько сайтов пользуются одним сервером, скорость может пострадать.
Рекомендую обратить внимание на проверенных хостинг-провайдеров, например Timeweb.
Поскольку стабильная работа WordPress сильно зависит от работы базы данных, убедитесь, что настройки в my.cnf соответствуют возможностям сервера. Рекомендуемые параметры:
query_cache_type = 1
query_cache_limit = 2M
query_cache_size = 20M
Кэш компилятора может увеличить производительность за счёт кэширования откомпилированных скриптов. По моему опыту, использование Xcache даёт прирост производительности примерно на 5% по сравнению с Eaccelerator.
Увеличение максимального количества соединений в файле httpd.conf (например, max_connections = 150) также позволит серверу обрабатывать больше подключений за раз, но изменять этот параметр следует с осторожностью, чтобы не исчерпать оперативную память.
11. Использование Content Delivery Network (CDN)
CDN позволяет размещать статические файлы (изображения, CSS, JS) на внешних серверах, что снижает нагрузку на основной сервер и ускоряет загрузку для пользователей по всему миру.
Однако, если ваш сервер находится в Германии и основная аудитория – немецкие пользователи, применение CDN может не дать заметного прироста.
12. Дополнительные настройки WordPress
Кроме вышеописанных мер, есть и другие действия, направленные на оптимизацию самого WordPress:
- Отключите хотлинки
Использование вашего сервера для хранения изображений может привести к чрезмерной нагрузке, если другие сайты заимствуют ваши изображения (hotlinking). Чтобы отключить хотлинки, добавьте в файл .htaccess следующий код, заменив example.com на имя вашего домена:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/.*$ [NC]
RewriteRule .*\.(gif|jpg|png|ico)$ - [F,L]
</IfModule>
- Используйте кэш браузера
Кэш браузера не делает сайт быстрее напрямую, но снижает нагрузку на сервер, кэшируя часто загружаемые элементы, такие как стили и скрипты. Добавьте в .htaccess следующий код:
FileETag MTime Size
<IfModule mod_expires.c>
<FilesMatch "\.(jpg|gif|png|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 year"
</FilesMatch>
</IfModule>
- Сжимайте статические данные
Сжатие данных уменьшает размер передаваемой страницы, снижая нагрузку на сервер и уменьшая время загрузки. Добавьте в .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[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
- Отключите Post Revisions
WordPress сохраняет каждую редакцию ваших статей, что увеличивает размер базы данных и замедляет её работу. Чтобы отключить сохранение ревизий, добавьте в wp-config.php:
define('WP_POST_REVISIONS', false);
Чтобы удалить ранее сохранённые ревизии, выполните следующий SQL-запрос в 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';
- Сократите количество запросов
Избавьтесь от ненужных HTTP-запросов для ускорения генерации страницы. Например, вместо динамического вывода метатега:
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
можно зафиксировать его как:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Это сократит количество запросов хотя бы на два.
Финальный вывод
Оптимизация скорости загрузки WordPress – это комплексный процесс, включающий компрессию изображений, отложенную загрузку, выбор и настройку плагинов, очистку базы данных, корректное подключение шрифтов, селективное включение скриптов и CSS, сжатие кода, использование кэширования, обновление версии PHP и выбор надежного хостинга. Благодаря реализации всех этих мер можно значительно сократить время загрузки сайта – у меня, например, после оптимизации загрузка снизилась до менее 1 секунды, что подтверждено тестами в Google PageSpeed Insights.