Как значительно ускорить ваш сайт на WordPress

👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

Когда деревья были большими а интернет медленным, необходимость оптимизировать работу сайта была очевидной. Сегодня, когда не редкость даже гигабитные каналы, возникает соблазн спросить «А зачем что-то там ускорять, копаться? И так ведь быстро работает!» Однако, даже если не учитывать тот факт, что быстрый интернет есть далеко не у всех и не везде, ширина интернет-канала далеко не единственный фактор, влияющий на быстродействие вашего блога.

Оценить текущее быстродействие вашего сайта достаточно легко, для этого можно воспользоваться бесплатным сервисом pingdom.com. Достаточно ввести доменное имя своего сайта, выбрать расположение, из которого проводится тестирование, и нажать кнопку «Start Test». После небольшого ожидания вы получите краткий вердикт. Например по результатам теста из Стокгольма, Швеция видно, что наш блог получил 86 баллов из 100 по меркам бенчмарка GooglePageSpeed (результат свыше 80 считается хорошим).

Как значительно ускорить ваш блог

Итак, разберем, что именно увеличивает время загрузки и какие именно факторы влияют на то, насколько быстро ваш блог открывается у посетителя.

Хостинг

На первом месте по значению объективно стоят характеристики хостинга, где размещен ваш сайт. Виртуальный хостинг (Shared Hosting) потому и дешев, что ресурсы сервера ваш сайт делит с сайтами других пользователей. Такая модель подойдет для начинающего блогера, но с ростом посещаемости и популярности ресурса стоит задуматься о «переезде» на выделенный сервер (VPS/VDS). Если вы уже «живете» на VPS, следует периодически мониторить загруженность сервера, ведь с ростом посещаемости растут и требования к «железу».  Влияет и географическое положение хостинга (как бы не был хорош хостер, но если его серверы находятся в Австралии, а большинство ваших посетителей из России — сайт будет работать медленно)

Даже на идеальном хостинге весьма важно правильно настроить сайт:

Кэширование

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

Изображения

Очень важно оптимизировать изображения, использующиеся на сайте. Приведу пример: если неоптимизированная .png картинка «весит» 150кб, та же картинка в .jpg займет на диске 90-100кб до оптимизации и 60-70кб после. А если применить возможности профессионального фоторедактора типа Photoshop — вес и вовсе сокращается до 30-40кб. Отсюда вывод: лучше всего загружать на сайт предварительно оптимизированные изображения. Однако если вдруг это невозможно, на помощь могут прийти плагины, например EWWW Image Optimizer

Lazy Load

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

Отключение эмотиконов

Начиная с версии 4.2 в WordPress обычные смайлы заменили на анимированные изображения — эмотиконы (emoji). В них самих особого вреда нет, но поскольку подгружаются они через внешний запрос к сайту wordpress.org, и скрипт их вызова встроен в «шапку» веб-страницы, то во имя повышения производительности сайта их стоит отключить. Для этого достаточно просто вставить в файл functions.php код

/* --------------------------------------------------------------------------
 * Отключаем Emojii
 * -------------------------------------------------------------------------- */
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_wp_emojis_in_tinymce' );
function disable_wp_emojis_in_tinymce( $plugins ) {
    if ( is_array( $plugins ) ) {
        return array_diff( $plugins, array( 'wpemoji' ) );
    } else {
        return array();
    }
}
/* --------------------------------------------------------------------------- */

Слайдеры и галереи

Важно подобрать наиболее «быстрый» плагин слайдеров и фотогалерей. Самыми быстрыми слайдерами на сегодняшний день являются Soliloquy и Nivo Slider, среди галерей пальму первенства держат Envira Gallery и NextGen Gallery. Последний плагин — старожил, которому уже уделили заслуженное внимание на страницах нашего сайта.

База данных

Со временем неизбежно появляется необходимость обслуживания базы данных так как она разрастается. С этим превосходно справляется плагин WP-Sweep. Этот плагин позволяет, например, удалить все комментарии, помеченные как спам, отслеживает дубли записей, и позволяет провести оптимизацию таблиц базы данных. В связи с прямым доступом к базе данных разработчик плагина рекомендует делать резервную копию базы перед каждым применением его творения. Впрочем, бэкап никогда не бывает лишним. Несколько «утяжеляет» базу данных также встроенный в WordPress механизм версионности (сохранение нескольких последних редакций одного и того же материала). Например, для лимитирования количества версий тремя, достаточно подключиться к хостингу по FTP и добавить в файл wp-config.php строку

define( 'WP_POST_REVISIONS', 3 );

CSS и JS

За этот абзац хочу поблагодарить пользователя с ником «Евгений«, он в комментарии указал на момент, который я упустил при написании статьи. На скорость загрузки сайта влияет также порядок загрузки элементов страницы (таблиц стилей, скриптов, шрифтов итп). Дело в том, что браузер загружает элементы веб-страницы последовательно, и пока не загрузит «шапку» сайта — не будет грузить подвал. Поэтому все что не относится к контенту страницы лучше загружать попозже. Поможет в этом прекрасный плагин Above The Fold Optimization. Он позволит отсрочить загрузку java-скриптов и CSS-файлов, оптимизировать время загрузки шрифтов от Google (если ваш сайт их использует). Также по умолчанию WordPress вставляет в каждую страницу кучу лишнего кода, включая «архинужную» информацию об используемой версии движка (прямое приглашение злоумышленникам использовать уязвимости и взломать ваш сайт). Против этого поможет плагин Remove WordPress Overhead.

Защита от прямого скачивания

Последнее о чем я бы хотел сказать в рамках сегодняшней статьи — необходимость ограничения прямого скачивания файлов с вашего сайта (так называемого leeching’а). Есть в интернете хитрые люди, которые вместо того чтобы разместить картинку на своем сервере, размещают на сайте только ссылку на изображение, что лежит на сервере у вас. В результате это ведет к повышенной нагрузке на ваш сервер. Избежать этого довольно просто — достаточно отредактировать файл .htaccess . В него нужно добавить такие строки

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yoursite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google.com [NC]
RewriteRule .(jpg|jpeg|png|gif)$ – [NC,F,L]

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

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

Создай свой первый сайт на WordPress

Вячеслав aka CrazyMoon

Сисадмин, интересующийся вебмастерингом, IT-шник, который любит море.

Оцените автора
Добавить комментарий

  1. евгений

    а почему про перенос css и js не указано? или просто не знаете как сделать?
    Не сказано про то что в вп можно вырезать лишний код — фиды, имя генератора и т.д. все это в целом так же влияет на скорость.

    Ответить
    1. Вячеслав aka CrazyMoon автор

      Спасибо, Евгений.
      Внес поправку в текст статьи.

      Ответить
  2. Lu

    Насчет защиты от прямого скачивания изображения (последнее). Как оно работает?
    Я добавила эти строки, скопировала адрес своей фотки с сайта и вставила в вконтакте, чтобы проверить. Все копируется прекрасно.

    Я изменила только в 3 строке сайт на адрес своего сайта.

    Что я упустила?)

    Ответить
  3. Юзер

    главные ДВЕ угрозы тяжелого сайта: 1 — не использовать билдеры построения страниц (особенно elementor), 2 — не использовать навороченные темы с themeforest.

    Ответить