18 способов ускорить любой WordPress сайт
Всем привет, друзья. Самые разные пользователи по всему миру используют сегодня WordPress для создания своих сайтов совершенно разных тематик и направлений. В результате, на этой системе управления контентом работает практически половина сайтов, в основе которых лежит какая-либо CMS вообще. Сегодня это около 74 млн. сайтов (статистика). И конечно, вопрос о том, как правильно, безопасно и максимально ускорить свой сайт на WordPress является чрезвычайно актуальным для многих.
Мы расскажем в этой статье о самых действенных способах опробованными различными специалистами. Однако, это конечно не означает, что вам нужно срочно и бездумно подгонять свой сайт под все перечисленные ниже пункты. Некоторые моменты являются в той или иной степени индивидуальными и если вы используете только часть из них, это уже будет неплохим результатом.
Итак, разгоняем наш любимый WordPress в 2017 году. Поехали!
[toc]1. Используйте надежный фреймворк/тему
За каждым WordPress-сайтом лежит тема или фреймворк, и это иногда может приводить к проблемам. Каждая тема написана по-разному, и потому одни зачастую темы лучше, чем другие. Дефолтные WordPress-темы типа Twenty Fifteen, очень быстрые, потому что легковесные.
Будьте осторожны, когда покупаете темы на таких мега популярных сайтах, как ThemeForest и Creative Market. Несмотря на то, что там много великолепных тем, вы должны понимать, что разработчики часто добавляете функции просто, чтоб увеличить продажи. Так что главное — найти правильных разработчиков. И именно о таких мы не раз писали на страницах этого сайта.
Так же, такие легкие фреймворки, как Thesis Theme framework и Genesis также известны тем, что на их основе разрабатываются быстрые и хорошо написанные темы.
2. Использование кэширования
Кэширование – это еще один важный фактор, который стоит учитывать, если мы хотим разогнать WordPress. Кэширование позволяет хранить ваши страницы и записи в виде статичных файлов, которые затем доставляются вашим посетителям, минимизируя процесс загрузки на вашем сервере. Вы можете использовать кэширование, используя WordPress плагины кэширования и тем самым внедрив кэширование браузера и кэширование со стороны сервера.
Плагины кэширования
Вот несколько лучших бесплатных и платных плагинов кэширования:
Cache Enabler
W3 Total Cache
WP Super Cache
WP Rocket
Установка и правильная настройка плагина кэширования может привести к увеличению производительности в 200-300%!
Обход PHP для кэшируемых страниц
Ниже представлена более продвинутая конфигурация Nginx обхода PHP для кэширования страниц. Этот пример оптимизирован для плагина Cache Enabler.
Пример конфигурации Nginx
set $cache_path $request_uri; # bypass cache if query string not empty if ( $query_string ) { set $cache_path 'nocache'; } # bypass cache for POST requests if ( $request_method = POST ) { set $cache_path 'nocache'; } # bypass cache for admin area if ( $request_uri ~ /wp-admin/ ) { set $cache_path 'nocache'; } # bypass cache for logged in users if ( $http_cookie ~ (wp-postpass|wordpress_logged_in|comment_author)_ ) { set $cache_path 'nocache'; } location / { try_files /wp-content/cache/cache-enabler/${http_host}${cache_path}index.html $uri $uri/ /index.php?$args; }
Кэширование браузера – добавьте заголовки Expires к WordPress
Вы также можете добавить кэширование браузера, добавив заголовки expires. Заголовки Expires говорят браузеру, должны kb они запросить определенный файл с сервера или они должны захватить их из кэша браузера. Добавляя их, вы можете уменьшить количество HTTP-запросов, которые им нужны. Некоторые плагины кэширования для WordPress позволяют добавить их, но вы также можете просто добавить код в ваш файл .htaccess
<IfModule mod_expires.c> # Enable expirations ExpiresActive On # Default directive ExpiresDefault "access plus 1 month" # My favicon ExpiresByType image/x-icon "access plus 1 year" # Images ExpiresByType image/gif "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/jpg "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" # CSS ExpiresByType text/css "access plus 1 month" # Javascript ExpiresByType application/javascript "access plus 1 year" </IfModule>
Кэширование сервера
Помимо плагинов кэширования для WordPress и кэширования браузера вы можете использовать преимущества кэширования со стороны сервера. Такой вид кэширования обычно используется на сайтах с большим количеством трафика. Кэширование с Varnish может быть очень мощным, если его скомбинировать с плагином кэширования и CDN.
Prefetch обычно используемых доменов
Prefetching – это нечто сходное кэшированию в том смысле, что вы тоже говорите браузеру, типа Chrome, что нужно найти DNS-настройки перед тем, как они на самом деле понадобятся. Благодаря этому «прошиваются» страницы и запросы любых prefetched-доменов, которые еще не кэшируются, и они начинают работать быстрее.
Вы можете использовать prefetch для доменов в WordPress, добавив синтаксис домена в ваш файл header.php между тегами <head> </head> . Этот процесс не блокируются и будет включаться только тогда, когда возможно. Вот распространенные примеры.
Prefetch Google шрифты:
<link rel="dns-prefetch" href="//fonts.googleapis.com">
Prefetch Google код (jQuery)
<link rel="dns-prefetch" href="//ajax.googleapis.com">
Prefetch Google Analytics
<link rel="dns-prefetch" href="//www.google-analytics.com">
Удаляем Query Strings из статичных ресурсов
Также можно извлечь пользу из удаления query strings из ваших статичных ресурсов, так как они могут приводить к возникновению проблем с прокси кэша и CDN. В WordPress для этого есть парочка опций.
Отредактируйте ваш файл functions.php, чтоб включить туда функцию, которая удалит query strings.
function _remove_script_version( $src ){ $parts = explode( '?ver', $src ); return $parts[0]; } add_filter( 'script_loader_src', '_remove_script_version', 15, 1 ); add_filter( 'style_loader_src', '_remove_script_version', 15, 1 );
Если вы используете плагин кэширования типа W3 Total Cache, то у вас есть опция, которая предотвращает создание query strings. Есть бесплатные WordPress-плагины, которые также могут удалить query strings, и это плагины Query Strings Remover и Remove Query Strings From Static Resources.
3. Внедрение сети доставки содержимого (Content Delivery Network)
Неважно насколько крупная у вас WordPress-инсталляция или, как много трафика вы получаете, вы все равно выиграете от внедрения сети доставки содержимого (CDN). CDN берет все ваши файлы (CSS, Javascript, картинки) и доставляет их на сервер ближе к посетителю, что уменьшает время загрузки. Кроме скоростного бонуса сеть доставки содержимого также может создать положительное впечатление от вашего сайта, улучшить его ранжирование, увеличить время, которое ваши посетители проводят на сайте, улучшить конверсию и даже SEO.
Загрузка всех ассетов из WordPress CDN
Убедитесь в том, что вы загружаете даже самые мелкие файлы, типа фавикона, из вашей CDN. Если загружено все из CDN, то создается одно единое соединение. Чтобы твикнуть ваш фавикон, просто киньте его в корневой каталог вашей инсталляции WordPress с помощью FTP, а затем добавить следующее в ваш header.php между тегами head.
<link rel="shortcut icon" href="https://cdn.domain.com/favicon.ico" type="image/x-icon" />
Как вы видите из примера ниже, загружено 100% ваших ассетов из CDN.
4. Оптимизация базы данных WordPress
WordPress имеет тенденцию замедляться, если ваша база данных не оптимизирована должным образом. Вы можете содержать базу данных в чистоте, отключив или лимитировав количество старых версий, удалив старые версий и лимитировав количество страниц WordPress 100 единицами.
Отключение и ограничение количества версий постов в WordPress
WordPress создает множество версий постов, когда вы пишите контент. Если вы не очень аккуратны, то в базе данных у вас могут скопиться тысячи ненужных версий.
Чтоб решить эту проблему, вы можете или отключить создание версий постов вообще, или ограничить их количество.
Отключение создания версий WordPress-постов
Чтоб отключить создание версии постов в WordPress, вам нужно добавить следующий код в ваш файл wp-config.php. Таким образом вы сначала измените интервал авто сохранения по умолчанию с 60 секунд на 5 минут, а затем и вовсе отключите создание версий записей. По умолчанию останется одно авто сохранение на пост.
define('AUTOSAVE_INTERVAL', 300); // seconds define('WP_POST_REVISIONS', false);
Также есть бесплатный маленький плагин, который называется Disable Post Revision. Он делает тоже самое без необходимости копаться в коде.
Ограничение количества сохраненных версий WordPress-постов
Чтоб ограничить количество создаваемых версий WordPress-постов, вам нужно добавить следующий код в ваш файл wp-config.php. Таким образом вы измените интервал авто сохранения по умолчанию с 60 секунд на 5 минут и ограничите количество создаваемых версий до трех. Впрочем, вы можете указать любое желаемое количество сохраняемых версий.
define('AUTOSAVE_INTERVAL', 300); // seconds define('WP_POST_REVISIONS', 3);
Удаление старых версий постов из вашей базы данных
После того, как вы отключили или лимитировали количество создаваемых версий записей, вам нужно будет подчистить все, удалив старые версии. Для этого мы рекомендуем временно установить бесплатный плагин WP-Optimize.
С помощью этого плагина вы можете удалить все старые версии, сохраненные черновики, спам-комментарии, неодобренные комментарии, пингбэки и трекбэки. Самая свежая WP-Optimize также позволяет включить авто очистку по заданному заранее графику.
Предупреждение об ограничении WordPress в 100 сраниц
Вы должны знать, что WordPress не создан для того, чтоб работать более, чем со 100 страницами. Если у вас накопится более 100 страниц, то у вас начнутся проблемы с памятью, и вы заметите, что работа сайта существенно затормозилась со стороны бэкенда. Ваш фронтенд при этом не замедлится.
Страницы имеют свое иерархическое древо. Так что все, что касается страниц, заканчивается загрузкой всего иерархического древа страниц в зоне бэкенда. Это нужно, чтоб установить, как эта страница связана с другими. Когда мы имеет дело с записями, то здесь нет связи с другими записями, и присутствуют только данные связанной записи, так что здесь не нужно будет столько всего загружать. Помните, что по своей сути WordPress – это блоговая платформа.
Решение? Вам нужно начать использовать кастомные типы записей. Вы можете использовать бесплатный плагин типа Post Type Switcher, если у вас много страниц, и вы хотите конвертировать их в кастомные типы записей.
5. Оптимизируйте картинки, используя компрессию без потерь
Картинки в среднем составляют 56 процентов веса страницы стандартного сайта. Так что оптимизация и компрессия картинок должна занять важное место в вашем списке приоритетов. Компрессия без потерь –это метод, который позволяет сжимать картинки, уменьшив их размер, но не затронув их качество.
Optimus – это плагин, который нацелен именно на компрессию картинок без потерь: он может убрать до 70% веса изображений. Вы можете установить его и автоматически сжимать ваши картинки во время их загрузки. Почитать об оптимизации картинок можно еще вот здесь.
6. Компрессия Gzip
Gzip – это еще один вид компрессии, который сжимает веб-страницы, CSS и javascript на уровне сервера перед тем, как послать их в браузер.
Apache
Вы можете включить компрессию, добавив следующий код в ваш файл .htaccess.
<IfModule mod_deflate.c> # 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[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html Header append Vary User-Agent </IfModule>
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 [1-6].(?!.*SV1)"; gzip_vary on;
7. Сократите количество WordPress-плагинов
Очень важно придерживаться необходимого количества плагинов, установленных на вашем сайте, так как слишком большое и бездумное количество плагинов часто ведет к замедлению работы сайта. Но перед тем, как тупо удалять плагины, попытайтесь определить, какие именно тормозят ваш сайт (если тормозят). После того, как вы проведете такой анализ, решите, действительно ли вам так нужны проблемные плагины, или можно добиться тех же результатов другими способами. Всегда помните о том, что один «кривой» или давно не обновляемый плагин может стать проблемой гораздо большей чем несколько десятков исправно работающих.
P3 (Plugin Performance Profiler)
P3 – это бесплатный WordPress-плагин, который поможет вам увидеть, какие плагины затормаживают работу вашего сайта, а именно он показывает:
- Время загрузки каждого плагина
- Общее количество активных плагинов и время загрузки страницы
- Влияние каждого плагина на скорость загрузки страницы
- Количество MySQL запросов (на уровне страницы)
- Сравнение сканирований
Заметим: сейчас плагин не совместим с PHP7.
WP Performance Profiler
WP performance profiler – это недорогой (всего 9$) премиальный WordPress-плагин, созданный специально для того, чтоб вы могли измерить производительность ваших WordPress-плагинов на более продвинутом уровне, чем это делает P3.
И конечно же — после того, как анализ проведем, плагины-измерители можно удалить или просто отключить.
8. Оптимизируйте производительность Web-шрифтов
57% веб-сайтов сейчас использует кастомные шрифты, и это 850% прирост с 2011. Мы заметили, что важно использовать только те шрифты, которые действительно нужны и такие форматы, как WOFF и WOFF2.
В наших тестах Google шрифты показали себя хорошо, так как они используют собственный CDN и придерживаются форматов WOFF. Open Sans стал самым быстрым из 10 самых популярных шрифтов. Если вы хотите ускориться и при этом использовать Google-шрифты, то лучшая комбинация для WordPress это Open Sans и веб-безопасный Arial.
Важно отметить, что разница между Google-шрифтом и веб-безопасным шрифтом составляет 200 миллисекунды. Она складывается из времени загрузки шрифта и дополнительного запроса HTTP к серверам Google.
Также вы можете перенести ваши Google Шрифты на собственный CDN.
Вы также можете шагнуть еще дальше в сторону base64, закодировав ваши шрифты в файл CSS, а затем поместив их в localStorage. Нативный кэш браузера обновляется быстро, особенно, на мобильных девайсах. Так что если вы сохранились на localStorage, то файлы кэшируется очень быстро.
Мы рекомендуем вам обратить внимание на localFont tool: вы можете быстро перетащить ваши WOFF-шрифты в этот инструмент, и он закодирует их в base64, а затем даст вам файлы CSS и Javascript, чтоб использовать их на вашем WordPress-сайте.
9. Оптимизация иконок Font Awesome
Когда дело касается популярного Font Awesome, то у нас есть парочка опций, которые помогут ускорить эти иконки. Если ваша тема уже включает Font Awesome, то вам нужно будет немного поработать над ней.
Вариант 1 – используйте Font Awesome CDN на хостинге с открытым исходным кодом
Первый метод – это версия Font Awesome CDN на хостинге. Этот проект находится на хостинге от KeyCDN, и вы сможете воспользоваться преимуществом более чем 25-ти серверов, на которых есть бесплатные HTTP/2 и CORS. Просто используйте этот код, вклеив его в файл header.php вашего WordPress между тегами <head>.
https://opensource.keycdn.com/fontawesome/4.6.1/font-awesome.min.css
Затем вы сможете использовать иконки Font Awesome везде на вашем WordPress –сайте с помощью тега <i. Вот примеры использования CSS префикса <fa> и названия иконки.
<i class="fa fa-database fa-lg"></i>
Вариант 2 – Хостингование Font Awesome на вашем собственном CDN (рекомендуется)
Второй вариант, который мы рекомендуем, заключается в использовании вашего собственного CDN для их хостингования. Так как загрузка будет производится с помощью того же соединения, которое использует другие ассеты, то одним DNS-поиском будет меньше.
Первое, что нужно сделать, это убедится в том, что ваш файл Font Awesome загружен согласно первоначальному CSS-пути. В случае этого варианта, пока вы используете файл Font Awesome CSS, как загружаемый из CDN, это будет файл шрифтов. Вот пример того, как это используется на странице:
Ссылка на ваш файл Font Awesome, использующий CDN URL, должна выглядеть как сниппет <link>, отображенный ниже.
<link href="https://cdn.keycdn.com/css/font-awesome-4.4.0.min.css" rel="stylesheet">
Вот и все, теперь ваши иконки Font Awesome загружаются супербыстро!
10. «Лениво» загружающиеся картинки, видео и Disqus
Ленивая загрузка – это такой концепт, который предполагает отсроченную загрузку контента, подгружая только ту часть, которая видна пользователю. В WordPress это обычно означает то, что объект не загрузится, пока пользователь не прокрутит страницу вниз или пока не использует событие on-click. Вы можете загрузить таким образом любой контент, начиная от картинок и заканчивая видео и даже системой комментирования Disqus.
Ленивая загрузка изображений
Для ленивой загрузки картинок есть хороший бесплатный плагин под названием BJ Lazy Load. Этот плагин заменяет все изображения постов, миниатюры, граватары и айфреймы контента вместилищами картинок и загружает контент, по мере приближения к окну браузера. Также он работает с текстовыми виджетами. Если вы используете плагин кэширования WP Rocket, то можете воспользоваться его опцией ленивой загрузки.
Ленивая загрузка видео
Для ленивой загрузки ваших видео есть бесплатный плагин, который называется Lazy Load for Videos. Он заменяет видео с Youtube и Vimeo кликабельными привью-картинками.
Ленивая загрузка Disqus
Disqus – это великолепная система комментирования, которая отсекает практически 99% спама. Но дефолтный плагин Disqus создает 10+ HTTP запросов, которые неплохо тормозят ваш сайт. К счастью есть плагин Disqus Conditional Load, который отсекает все эти HTTP-запросы первоначальной загрузки. Теперь этот плагин дружествен к SEO, а это значит, что Google будет индексировать ваши комментарии.
11. Минификация и объединение CSS и Javascript
Когда мы говорим о скорости загрузки WordPress-сайта, минификация и объединение файлов могут сыграть здесь важную роль.
Минификация
Минификация ресурсов означает удаление ненужных символов из ваших файлов HTML, Javascript и CSS. Удаляются следующие не нужные для загрузки файлов символы:
- Пробельные символы
- Знаки полной строки
- Комментарии
- Разделители
Это позволит ускорить загрузку сайта, так как снижается количество кода, который требует ответа от сервера.
Объединение
Объединение – это процесс комбинирования ваших файлов CSS и Javascript в один файл, целью которого является снижение количества HTTP запросов. Иногда можно даже снизить время загрузки файлов. В зависимости от сайта можно ускорить загрузку страниц, применив параллельные загрузки. Так что тут нужно тестировать все способы, чтоб узнать, что именно лучше сработает для вашего сайта.
Вы можете использовать WordPress плагины для минификации и объединения вашего кода. В WP Rocket, например, эти опции присутствуют в основной вкладке.
Большинство плагнов кэширования сейчас предлагают эти опции, но также есть другие бесплатные легковесные решения: Better WordPress Minify и Autoptimize. Также, когда мы говорим о позиционировании CSS иJavascript в WordPress, то лучше всего поместить CSS наверх, а javascript вниз. Заметим: если мы говорим об объединении HTTP/2, то сейчас оно не так важно, как раньше.
12. Уменьшение количества Misc HTTP запросов
Нам очень важно уменьшить количество HTTP-запроcoв, которые производит WordPress. Сейчас мы решим проблему граватара и лишних запросов, которые требуются для загрузки emoji
Граватары
Если вы используете родную систему комментирования WordPress, то она создает отдельные HTTP-запросы для каждого граватара. Если у вас много комментариев, то это может вылиться в тонны лишних запросов и ненужные редиректы, что мы и можем наблюдать в примере ниже.
Вот вам несколько вариантов решения проблемы
Решение 1 – Отключить пользовательские граватары
Не идеальное решение, но оно сработает, если для вас реально важна скорость загрузки сайта.
Чтоб сделать это, установите бесплатный плагин WP User Avatar. А затем в его меню кликните “Disable Gravatar and use only local avatars.” Затем выберете дефолтный аватар
Решение 2 – Disqus быстрее
Второй вариант заключается в ленивой загрузки Disqus. Это может показаться странным, так как добавление файла javascript, плагина и внешнего призыва обычно выливается в лишнее время загрузки. Но Disqus все-таки работает быстрее благодаря уменьшенному количеству HTTP запросов.
Отключение Emoji
В WordPress 4.2 появилась дополнительная поддержка emoji. И, к сожалению, это означает появление дополнительного файла javascript wp-emoji-release.min.js?ver=4.3.1 в «шапке». Благодаря этому создается ненужный дополнительный HTTP-запрос.
Отключаем emoji, чтоб избавиться от дополнительного HTTP-запроса.
Сначала откроем настройки Публикации в WordPress и убедимся в том, что убрана галочка с “преобразовывать смайлики” в разделе «форматирование».
Способ 1 – WordPress-плагин
Установите бесплатный плагин Disable Emojis. Этот плагин отключает новую функциональность emoji в WordPress 4.2.
Способ 2 – WordPress функция
Если вы не хотите устанавливать лишний плагин, просто возьмите код из плагина, который описан выше и вклейте его в нижнюю часть файла 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 – это великолепный WordPress-плагин, но по умолчанию он загружает свой скрипт на каждой странице. А с помощью этого плагина это можно легко отключить, чтоб плагин загружался только на контактной странице.
Отключение Embeds
Начиная с WordPress 4.4, происходит загрузка нового скрипта wp-embed.min.js , который позволяет вам просто вклеивать видео, картинки, твиты и т.д. К примеру, WordPress автоматически превратит URL в YouTube-вклейку и предоставит живое привью в визуальном редакторе. Многие люди эту функцию не используют, тем более, что мы всегда можете захватить код для вклейки с YouTube или Twitter. Большая проблема этой функции заключается в том, что она загружает скрипт на каждой странице. Давайте посмотрим, как можно отключить этот скрипт.
Вариант 1 – WordPress-плагин
Установите WordPress-плагин Disable Embeds. Вот что делает этот плагин:
- Не позволяет другим вклеивать что-то в ваш сайт
- Не позволяет вам вклеивать что-то с подозрительных сайтов
- Отключает все JavaScript, родственные этой функции
Вариант 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 [NC] RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]
14. Отключение пингбэков и трекбэков
Пингбэки и трекбэки теперь скорее наследие прошлого и могут замедлять загрузку страниц. С помощью Ahrefs, Google alerts и других мониторинговых инструментов, вы можете с легкостью видеть чужие ссылки на ваш сайт.
Вы можете отключить пингбэки и трекбэки в секции «Обсуждение» в WordPress. Заметим: применяется только к новым записям.
Чтоб отключить пингбэки старых записей, вы можете использовать массовое редактирование записей, а для пингов включить “Do Not Allow.” (Запретить)
15. Определите габариты картинок
Большинство из вас, вероятно, видело следующую рекомендацию от Google Pagespeed:
…Предположение по оптимизации: “Сжав и изменив … вы сможете сохранить 5.8 KB (51%).”
Эта рекомендация говорит о том, что размеры изображения были изменены браузером. Например, возможно, вы загрузили картинку шириной 500px, но ширина колонки, в которую оно должно быть помещено, всего 400px. В результате, благодаря CSS, размер картинки был уменьшен до 400px, чтоб изображение соответствовало колонке. Это может стать проблемой для большого количества тем, так как разработчики пересматривают размеры изображений, используя CSS.
Лучше всего загружать картинки в WordPress, используя правильные параметры изначально. Иногда для этого нужно подрезать картинки в Photoshop, Paint или Gimp, перед тем, как вы загрузите их на ваш сайт.
16. Решаем проблему медленного admin-ajax.php
In WordPress 3.6 был представлен WordPress Heartbeat API, который позволяет WordPress устанавливать связь между браузером и сервером. WordPress Heartbeat API использует admin-ajax.php, чтоб осуществлять AJAX-обращения из веб-браузера. Вы, вероятно, можете наблюдать это во время проведения скоростного теста. Это может стать причиной активного использования CPU и возникновения множества PHP-обращений. К примеру, если вы оставили админку открытой, то запросы POSTбудут непрестанно посылаться к этому файлу на регулярной основе.
Есть бесплатный плагин для WordPress, который называется heartbeat control и позволяет контролировать то, как часто используется WordPress heartbeat API.
Заметим: есть много сторонних разработчиков, которые сейчас используют этот файл. Если вы заметили задержки, это может быть связано с тем, что плагин использует admin-ajax.php. Xтоб разобраться в этом, вы можете прогнать ваш сайт через инструмент тестирования скорости, определить, где находится обращение admin-ajax.php и открыть данные записи.
Затем вы можете сказать по названию “action” какой плагин его использует. В этом примере у нас “get_shares_count”, что указывает на социальный плагин с выключенным кэшированием. Если включить кэширование, то использование admin-ajax.php прекращается.
17. Настройка 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 tuning primer script
phpMyAdmin
18. Выберете надежный веб-хостинг
В деле разгона WordPress надежный и быстрый хостинг играет далеко не последнюю роль. Мы рекомендуем держаться подальше от дешевых решений, потому что там сервера переполнены. Лучше всего использовать VPS или хостинг с администрированием WordPress.
О наилучших решениях вы можете прочитать тут
О наиболее бюджетных и провернных в этой статье.
Еще по теме:
Ускорение сайта — лучшие плагины кэширования
25 сниппетов для увеличения производительности WordPress
Спасибо за статью. Очень интересно и познавательно. Большую часть пунктов знал и внедрил. Про «Prefetching» не слышал, пойду внедрять 🙂
Кстати, проблему с граватарми я решил по-другому: установил плагин NIX Gravatar cache (вроде бы правильно написал). Он кэширует граватары и грузит их локально с хостинга, а не с сервиса граватара.
статья нормик 2 пункта сделал. остальное было уже сделано
Спасибо за статью, все в одном месте и много не банальных советов.
P.S. Заметил что отключили использование правой кнопки мыши на сайте, стало очень не удобно пользоваться. Раньше можно было сразу кучу статей открыть и по очереди смотреть, теперь приходится по десять раз туда-сюда заходить. Для вас конечно это рост времени на сайте, но пользоваться реально не удобно.
Спасибо и вам за комментарий. Но дело не в увеличении времени. В последнее время появились паразиты-неудачники, которые тупо копируют и воруют контент. Причем, массово. Впрочем, отключение не особо помогает. Так что, уже вернул как было.
Спасибо. Я на своих сайтах думал сначала поставить такое, но когда попробовал в действии понял что это не удобно и убрал. А своровать и так смогут, если захотят. Можно попробовать в гугл и яндекс написать, может будут банить, но это времени много отнимать будет, насколько рационально — под вопросом.
Спасибо и вам за комментарий. Но дело не в увеличении времени. В последнее время появились паразиты-неудачники, которые тупо копируют и воруют контент. Причем, массово. Впрочем, отключение не особо помогает. Так что, уже вернул как было.
Задротство от убеждённого задрота
Статья супер. Дмитрий поможете также ускорить мой сайт на ворд пресс за деньги?))
Спасибо Влад, но мы не оказываем подобных услуг.
Ну пожалайста. Не могу никого толкового найти…)
Стоящая статья, подборка вариантов увеличить скорость загрузки сайта. Сейчас попался бесплатный плагин Clearfy от Webcraftic. Так он может заменить несколько плагинов предлагаемых в статье для разных функций.
Отключать граватары в комментах, думаю, не стоит. Это же классно, когда видно кто оставил комментарий.
Согласен на все 100.
Clearfy от Webcraftic вытягивает все то, что делают другие плагины, и дубли, и шапку чистит и асинхронно шрифты грузит и даже заставляет браузеры кешить гугл-аналитику и проч и прочее. Касаемо граватарок — на дух не переношу 🙂 Ни функционал, ни реализацию. Эмоджи и прочее. Как это можно было внедрять в движок по умолчанию…
Хотелось бы узнать логику в том- Зачем устанавливать все эти плагины, чтобы потом их всех отключать? Ведь скорость загрузки WP сайта не важна пользователям у которых маленькая скорость загрузки. Скорее всего у них самый дешевый интернет. А это значит «для вас», что они «не платежеспособны». Так зачем на это тратить свое время. Думаю, что надо искать достойных пользователей, а не способ разломать WP, тратить собственное время на какую нибудь «Никарагуа- Уругвай- Святая Елена» в надежде, что они прочитают ваш контент быстрее на 1.5 секунды??? Ну и даже в России (не Москва- а какая нибудь Якутия- к примеру) ??? говоря о комерции- они не платежеспособны. Или я чтото не так понимаю? это я о WP, как о блогинге, а не как о комерческой платформе. если я чтото не понятное сказал- дайте мне знать, буду благодарен. PS- делаю на WP магазин для продаж в России товаров из Италии. Интересуюсь путями реализации…
да, к стати! уже сталкивался с проблемкой- по сегодняшний день, что в деревне Канадовка нет, не то чтобы оптики, нет даже кабеля. у них там «тарелки»… чтото типо телефонных вышек. и по тарелочной (не спутниковой) связи. просто пипец! более менее качает фэйс бук и новости. вот такая история. а вы про оптимизацию WP 🙂
Скорость загрузки сайтов важна при конкуренции в выдаче поисковика, т.к. сайт с более высокой скоростью загрузки при прочих равных идет выше, особенно в мобильном поиске (и яндекс и гугл сегодня отдельно ранжируют мобильные сайты и полновесные, а почти все сайты имеют и ту и ту версию благодаря грамотному css). Хотя соглашусь с тем, что «при прочих равных» в природе встречается редко.
Здраствуйте!
В Гугл-вебмастере в разделе»Ошибки сканирования» такая ошибка:
wp-admin/admin-ajax.php-код ответа 400.При переходе по адресу:wp-admin/admin-ajax.php
в левом верхнем углу страницы стоит 0.
У меня вопрос:Как избавиться от этой ошибки?
Заранее Спасибо!
Могу посоветовать w.tools. Помимо статики, кешируют и динамику в их CDN. Без дополнительных оптимизаций сайт летает.
Отличная и подробная статья!
Спасибо, на 10 пунктов ускорил сайт. Только Ваш ресурс глубоко в красной зоне. Разве вы не используете все эти рекомендации?