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

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

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

Поехали!

Обновлено 14.04.2015

Инструменты WordPress оптимизатора (для всех)

Сервисы

GTMetrix.com - этот сервис, используя технологии Google и Yahoo, детально проверит скорость загрузки любой страницы твоего сайта, скажет, что загружается дольше, какие проблемы могут видеть на твоем сайте поисковики, и подскажет, как их исправить.

Lossless cжатие картинок (без потери качества)

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

Smushit - этот сервис сжимает фотки без потери качества, без ограничений в размерах и количестве. Рекомендую! 

Дополнительно: Чтобы вообще не париться с прогоном всех картинок для своих статей, используй плагин WP Smush.it, через него также  можно сжать уже загруженные на блог картинки. Правда, это будет довольно долго, если у тебя их больше 20-ти штук.

PunyPng.com - этот сервис тоже отлично сжимает фотки в режиме lossless, но с ограничениями по размеру, не больше 500x500 пикселей для зарегистрированных пользователей, если не ошибаюсь.

Плагины

Google XML Sitemap - этот плагин создает правильную карту сайта в форматах xml и gzip, как для Google, так и для Yandex.

Greg's High Performance SEO - отличный musthave плагин для любого владельца сайта на WP. Он дает возможность настраивать все необходимые для SEO функции. А именно: возможность указывать метатэги (meta description, keywords, title) для всех статей и страниц сайта. Его преимущественная особенность в том, что этот плагин действительно High Performance ("высоко-производительный"), он работает гораздо быстрее своих аналогов и рекомендуется к использованию на посещаемых сайтах, и в том случае, если вы заботитесь о скорости загрузки своего сайта. Популярный All in one SEO создает бОльшую нагрузку, поэтому не рекомендую его.

NoSpamNX - антиспам плагин для WP, защищает от 100% автоматического спама, отличная альтернатива Akismet-у без всяких регистраций. Установил и пользуйся!

После длительного использования этого плагина я заметил, что он все-таки пропускает спам и обновления иногда запаздывают, поэтому переключился на Akismet. (Я немного схитрил и зарегистрировал всего 1 ключ, который использую на всех своих сайтах).

WP SuperCache - рекомендую ставить просто на каждый сайт на вордпрессе. Скорость загрузки сайта (отклик) - сейчас важнейший показатель любого сайта, на это очень внимательно смотрят поисковые боты, и если твой сайт долго грузится, ты не попадешь в топ поисковиков по популярным запросам. А этот плагин сокращает объем страницы и скорость загрузки в среднем в 2 раза.

WP Smush - обязательный плагин для тех, у кого на сайте есть или будут картинки, он оптимизирует их автоматом. Прогоняет через сервис Yahoo Smush.it, и возвращает в таком же прекрасном качестве, но уже в облегченном виде. Объем картинок влияет на скорость загрузки страницы, прогоняй все картинки через этот сервис и в последствии твой сайт будет грузиться в 2 раза быстрее, чем если бы ты не использовал этот плагин. Также лучше на сайт не вставлять фотографии оригинального размера, а вместо этого использовать обработанные Вордпрессом, уменьшенные копии.

SimpleTags или Yet Another Related Posts Plugin - выводит ссылки похожие материалы на каждой странице под записью. Важный плагин для того, чтобы превращать новых посетителей в постоянных, увеличивать время их нахождения на сайте, уменьшать Bounce Rate и помогать поисковикам изучать твой сайт.

WP-Noindex - рекомендуется, если у тебя на сайте будет или уже есть много ссылок на внешние ресурсы. Он оборачивает ссылки в noindex, nofollow автоматически.

WPLANG Lite - рекомендуется, если ваш сайт имеет хорошую посещаемость и/или установленную тему, которая содержит много языковых вставок (много переведенных фраз и слов), и содержится на обычном (shared) хостинге. Он выделяет из общего языкового файла WordPress-а часть для внешней (публичной) стороны сайта (отделяет массивную часть, которая используется только в админ. панели), что позволяет экономить используемую оперативную память.

Этот плагин вы уже не найдете через поиск плагинов в админке, потому что его давно не обновляли, можете скачать здесь: https://downloads.wordpress.org/plugin/wplang-lite.0.4.zip

SyntaxHighlighter Evolved - красиво оформляет вставки кода. Необходим тебе, если ты будешь публиковать какой-то код на страницах своего сайта: CSS, HTML, PHP, C# и др. Я его использую, вот  например, статья, в которой есть красивый код: Как убрать версию из скриптов и стилей WordPress.

Чеклист WordPress-оптимизатора:

- rel='nofollow' - добавлять этот тэг во все ссылки, которые ведут с твоего сайта и которым, ты не хочешь отдавать вес своих страниц.

- Sitemap - добавить свой сайт и сгенерированный sitemap.xml в Google Webmaster и Yandex Webmaster.

- Google & Yandex Webmaster - указать основной домен сайта с www или без (Host)

- Robots.txt - указать Яндексу и Google, какие разделы и страницы сайта индексировать, а какие нет, а также какой домен выбрать основным с www или без. ПРИМЕР ТУТ (просто поменяй twog.me на свой домен)

- Metadata (description, keywords = WordPress SEO)

- Код статистики, код Feedburner, код форм подписки в <noindex></noindex>, чтобы поисковики пропускали лишний код

- Внутренняя перелинковка:

  1. С главной ссылки на другие страницы, рубрики, карту сайта и самые популярные записи
  2. С других страниц и карты сайта ссылка на главную
  3. В каждой статье есть ссылка на главную страницу
  4. В каждой статье есть ссылки на другие похожие статьи
  5. На каждой странице ссылка на карту сайта

- Оптимизация статьи для поисковиков (SEO):

  • В статье должны быть слова выделенное жирным
  • В статье должны быть слова выделенное подчеркиванием
  • В статье должно быть изображение с тегом ALT содержащее КС
  • КС должно содержаться в первом предложении
  • КС должно содержаться в последнем предложении
  • В статье должны иметься ссылки на другие статьи вашего блога
  • Все ненужные ссылки должны быть закрыты атрибутом rel="nofollow"
  • В статье должна иметься хорошая плотность КС

- Настроить .htaccess (по желанию каждый пункт, не забудь поменять twog.me на свой адрес)

DirectoryIndex index.php

AddDefaultCharset utf-8

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.twog\.me$ [NC]
RewriteRule ^(.*)$ http://twog.me/$1 [R=301,L]

## EXPIRES CACHING ##

ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"

## EXPIRES CACHING ##

## EXPIRE HEADERS ##

  # 3 Month
  <FilesMatch "\.(flv|gif|jpg|jpeg|png|ico|swf)$">
    Header set Cache-Control "max-age=7257600"

  # 1 Week
  <FilesMatch "\.(js|css|pdf|txt)$">
    Header set Cache-Control "max-age=604800"

  # 10 Minutes
  <FilesMatch "\.(html|htm)$">
    Header set Cache-Control "max-age=600"

  # NONE
  <FilesMatch "\.(pl|php|cgi|spl)$">
    Header unset Cache-Control
    Header unset Expires
    Header unset Last-Modified
    FileETag None
    Header unset Pragma

## EXPIRE HEADERS ##
- Убрать из ссылок на стили и скрипты запросы вида "?ver=3.2.1", для лучшего браузерного кэширования (этот код в functions.php твоей темы)
function _remove_script_version( $src ){
	$parts = explode( '?', $src );
	return $parts[0];
}
add_filter( 'script_loader_src', '_remove_script_version', 15, 1 );
add_filter( 'style_loader_src', '_remove_script_version', 15, 1 );

15 комментариев к “WP Оптимизация”

  1. Анжелика 25.01.2013 в 22:04 #

    Классный у Вас сайт!

    Все написано по делу, конкретно и понятно, а главное все Полезное и Нужное!

    Пишите почаще!!))

    • Богдан 25.01.2013 в 23:51 #

      Спасибо 🙂 Очень приятно читать такое, Анжелика. Я обязательно буду писать еще.

  2. Марина 28.03.2013 в 09:15 #

    Содержательная статья об оптимизации на вордпресс, спасибо. Сразу все мысли в кучку собрались.

    Немного не поняла про - "Настроить .htaccess..."
    EXPIRES CACHING - в нем даты окончания обращения к прописанным файлам?

    Подскажите еще про рубрики. Как удалить cлово "category"? Я так понимаю, это надо делать в самом начале создания сайта, вот как раз у меня такая ситуация. Смотрю, у вас их тоже нет, в смысле - рубрики без category идут.

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

    • Богдан 28.03.2013 в 19:59 #

      Пожалуйста 🙂 Рад помочь.

      Насчет настройки .htaccess

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

       
      Options +FollowSymLinks 
      RewriteEngine on 
      RewriteCond %{HTTP_HOST} ^www.twog.me$ [NC] 
      RewriteRule ^(.*)$ <a href="http://twog.me/$1" target="_blank">http://twog.me/$1</a> [R=301,L] 
      

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

      А насчет удаления /category/ из ссылок... У меня это делает плагин WordPress SEO by Yoast, но я вам рекомендую для решения этой задачи плагин WP No Category Base (надо кстати его добавить в статью).

  3. Марина 28.03.2013 в 21:52 #

    хм.. как интересно с этим "EXPIRES CACHING", надо прописать себе такое.

    За плагины спасибо, даже не знала что такие есть для рубрик. А для категорий тоже есть?

  4. Юрий 11.01.2014 в 18:41 #

    Здравствуйте, Богдан! Подскажите как удалить из верхней части страницы javascript, который грузится на странице в первую очередь. Проверку производил google page speed insights . Он мне написал "удалить из верхней части страницы javascript и CSS блокирующий отражение.Как всё это сделать объясните новичку, популярно.

    • Богдан 11.01.2014 в 19:37 #

      Здравствуйте, Юрий.

      Я посмотрел ваш сайт, у вас проблема похоже в том, что как бы дублируется тот код, который должен выводиться один раз. Проверьте в админке - меню Внешний вид - Редактор - слева "Заголовок" (header.php): есть ли в этом файле строчка wp_head(); и сколько раз она там упоминается?

      Вы там ничего не редактировали самостоятельно? Что делали до того, как появилась эта проблема?

      • Юрий 11.01.2014 в 20:23 #

        Это мой header.php.Никогда не редактировал

        get_layout();
        if(!isset($_POST['smt_layout'])){
        get_template_part('top');
        } else {
        $return['title']=$SMTheme->show_title(false);
        }

        if ( isset($_POST['smt_layout'])&&$_POST['smt_layout']!=$SMTheme->layout ) {
        $return['div']='#content .container';
        ob_start();
        }

        if (!isset($_POST['smt_layout'])||$_POST['smt_layout']!=$SMTheme->layout) {
        get_sidebar();
        ?> layout ) {
        $return['div']='#main_content';
        ob_start();
        }

        • Богдан 12.01.2014 в 08:04 #

          Понятно. Тут только вызовы функций get_layout() и get_template_part('top') могут вести дальше. Надо в них искать ошибки.

  5. Виктор 13.05.2014 в 10:26 #

    Здравствуй, Богдан! Ставлю плагин WP Super Cache. Активирую. Выдает ошибку:

    "Permlink Structure Error

    A custom url or permalink structure is required for this plugin to work correctly. Please go to the Permalinks Options Page to configure your permalinks."

    В чем может быть ошибка?

    • Богдан 13.05.2014 в 16:58 #

      Здравствуй, Виктор.

      Ошибка происходит из-за того, что структура ссылок на твоем сайте еще не настроена, то есть работает по умолчанию.

      Тебе надо зайти в админку - Параметры - Постоянные ссылки.
      Затем на этой странице выбери подходящий вариант, то это это НЕ должен быть пункт "По умолчанию".

      Я обычно выбираю "Название записи". Но тогда, если у тебя названия записей на русском, тебе понадобиться еще плагин "rus-and-lat", чтобы переводить в ссылках русские буквы в английские (транслит).

      Или же, ты можешь выбрать вариант "Произвольно" и вписать в поле: /%post_id%/, тогда ссылки записей будут у тебя не /?p=123, а /123/. Логика та же, но WP Super Cache начнет работать.

      Если что-то непонятно из всего этого, пиши 🙂

      • Константин 14.01.2015 в 19:10 #

        Здравствуйте! Наткнулся тут на вашу переписку. У меня та же проблема. А что станет с проиндектированными страницами если сменить тип постоянных ссылок. они же пропадут?

        • Богдан 22.01.2015 в 13:46 #

          Здравствуйте, Константин.

          Да, без правильно настроенного 301 редиректа можно потерять все свои проиндексированные страницы. Поэтому с вопросом изменения ссылок нужно быть очень осторожным.

          • Ростислав 16.11.2015 в 14:42 #

            КОД НЕ РАБОТАЕТ ДЛЯ https: почему?

  6. Виктор 13.06.2014 в 10:47 #

    спасибо за рекомендации:)