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

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

Освобождаем базу данных (БД)

Большинство блогеров выбрали WordPress в качестве движка для своих блогов, так как он обладает позитивными особенностями: быстрая установка, легкая настройка и очень «гибкий» в работе. В WordPress есть такое понятие, как «revision». Каждые 60 секунд движок сохраняет копию нашего еще не опубликованного поста — «revision». После публикации статьи все варианты её изменений сохраняются в базе данных и таким образом заполняет БД ненужными данными. Оптимальная по размеру БД значительно быстрее выполняется. Для удаления всех ревизий используйте следующий запрос SQL:

DELETE FROM wp_posts WHERE post_type = «revision»;

Минимальное использование плагинов

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

<?php if (is_user_logged_in()) { ?>

<?php echo get_num_queries(); ?> queries in <?php timer_stop(1); ?> seconds.

<?php } ?>

Для примера проверьте количество запросов на вашем блоге и продолжительность их выполнения. Далее деактивируйте все установленные плагины и обратите внимание на количество запросов. После этого активируйте самые необходимые плагины один за одним и понаблюдайте за изменением количества SQL запросов. Таким образом, вы сможете обнаружить те плагины, которые делают наибольшую нагрузки. Если есть такой плагин (но вы в нем нуждаетесь) – деактивируйте и установите аналогичный по назначению плагин.

Использование «относительных путей» вместо «абсолютных»

Использование абсолютного пути для графических (картинки) и видео (видео ролики, клипы) материалов, Flash, JavaScript значительно увеличивает http запрос. Для избежания нагрузки следует использовать относительный путь к файлам вместо абсолютного. Пример абсолютного пути:

<img src=”http://www.site.ru/images/2010/foto.jpg”>

Для снижения HTTP запросов используем относительный путь к файлам. Пример относительного пути:

<img src=”/images/2010/foto.jpg”>

Статика Vs Динамика

По умолчанию WordPress создает динамические страницы с использованием MySQL и PHP. Следует отметить, что MySQL и PHP потребляют системные ресурсы. Допустим ваш блог имеет высокую посещаемость. Теперь представьте, что ваши посетители просмотрели 5к страниц. Таким образом, WordPress сгенерировал динамические страницы такое же количество раз. Следовательно каждый раз выполняется ряд SQL запросов. Для снижения количества запросов и как следствие нагрузки на сервер следует перейти от динамических страниц к статическим. С движком WordPress это осуществляется очень просто)) В этом нам поможет плагин Really Static — превращает блог на WordPress в статичные html-страницы, что  сказывается максимальным снижением нагрузки на сервер!

Использование кэширования страниц блога

Для кэширования страниц блога на WordPress были созданы специальные плагины: WP Super Cache, Hyper Cache, WP File Cache, DB Cache. Использование плагинов кэширования крайне рекомендовано. Плагины WP Super Cache и Hyper Cache из динамических страниц генерирует статические. Главный минус — невозможность использовать динамические элементы (например, на своем блоге Ua-Blogger.com я заметил некорректную работу постраничной навигации, см. в нижней части главной страницы блога после постов).

Плагины WP File Cache и DB Cache решили проблему с невозможностью использования динамических элементов, но возникла новая — более медленная работа плагина по сравнению с предыдущими 🙁

Также есть плагин кэширования отечественной разработки – плагин Maxsite-cache. Плагин платный, 30 WMZ.

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

Второй вариант кэширования – добавить заголовок “Expires”. После первого посещения, браузер вашего посетителя сохранит копию кэша и будет использовать их для будущих визитов.

Для кэширования таким способом следует в файле .htaccess (находится в корне блога, если отсутствует – создайте с правами 666) добавить следующий код:

<FilesMatch «.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$»>

Header set Expires «Thu, 15 Apr 2050 20:00:00 GMT»

</FilesMatch>

Так что проверяем кэширование на своих сапоблогах и снижаем нагрузку на сервер.

P.S. Яндекс наконец порадовал апом тИЦ от 28.01.2010. Забавно то, что более-менее человекоподобные сайты получили +10. На других тИЦ не изменился, но и падений замечено не было.

P.P.S. У Киноперца возникли проблемы с промо из-за возможного ддоса, сейчас подключаются новые сервера.



Понравился блог?
Тогда подпишись на RSS


Обсуждение


  1. А куда это писать ?
    DELETE FROM wp_posts WHERE post_type = “revision”;

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

    1
  2. Роман

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

    2

  3. Пост действительно полезный. Сейчас порою трудно отыскать описание применения того или другого плагина для wordpress
    Спасибо автору, что не поленился. Хотя мне еще рановато думать об ускорении движка 😀 . Вот как немного подрастет, читателей наберет — тогда и посмотрим.

    3
  4. знающий

    Пост отличный! есть несколько блогов на вп, пойду их ускорять. А то инногда они жесть как тупят)

    4

  5. Отличный пост. Еще пару советов по оптимизации wordpress можно прочитать здесь

    5

  6. alexpts, спасибо за ссыль — читателям будет полезно. Но лучше если б ты здесь что добавил 😉

    6

  7. Владимир, если вы решили серйозней заняться блогом — первым делом почистите свой шаблон, в нем зашиты говноссылки. Ознакомьтесь с моей недавней статьей http://ua-blogger.com/besplatnyiy-govnosyir-dlya-govnomastera.html и поймете где их искать.

    7

  8. Никита, этот SQL-запрос нужно выполнить в панели своего хостера в разделе PhpMyAdmin

    8

  9. Полезно для всех сидящих на WP, сам тоже недавно писал про ускорение сайта в общем. Все верно написано, пойду в своем wordpress покопаюсь 8)

    9

  10. Ua-blogger, спасибо, реально полезный пост!
    Я пока не собираюсь заниматься оптимизацией скорости работы своего блога, но на будущее внес в закладки.

    10

  11. А что добавить…
    Кроме оптимизации ВП, стоит оптимизировать клиентскую часть (неважно для какого движка, ВП то или не ВП). В большинстве случаев визуальный прирост производительности видимый для глаза на стороне клиента. Кто хочет, тот найдет в интернет все способы клиентской оптимизации (Объединям картинки, скрипты, стили. Жмет что можно и тд.).
    Кэширование становится актуальным когда появляется большая посещаемость.

    Если это можно рассматривать как пункт из, то начать следует с оптимизации мозга администрации сайта. Люди ставят плагины просто так или для понтов, а не исходя из потребностей. Недавно спросил у человека «Зачем тебе е-коммерц на блоге?», мол он очень тяжелый и делает много запросов к БД. На что получил ответ «Просто так, чтобы сайт солиднее выглядел».

    11

  12. #1054 — Unknown column ‘???revision??

    Вот что я получаю при попытке сделать запрос DELETE FROM wp_posts WHERE post_type = “revision”;

    12

  13. Теперь блог действительно шустрее стал. Спасибо за подробное описание!

    13

  14. Я свой чуток оптимизировал Гипер кешом и поубирал лишние плагины. За ревизии спасибо давно думал как бы их удалить 😉

    14

  15. Не верю, что от удаления ревизий будет быстрее работать блог, но вот места на диске будет заниматься резко меньше — это да. У большинства из нас на хостинге пространство конечное, так что очень полезная подсказка; вроде простая, но надо же вспомнить про такой ресурс. Удалил у себя 800 текстов со статусом «revision».

    @ShowMan: надо тебе кавычки руками перенабрать — копируются они «оттипографированными», а должны быть простыми прямыми, как с клавиатуры набираются. Попробуй.

    Ещё один момент — не у всех префикс таблиц вордпресса в базе wp_ , надо менять на свой (например, если в одной базе несколько вордпрессов, они отличаются префиксом таблиц).

    15

  16. Статья хорошая, хорошо бы ещё узнать движок джумла 1.5.9 ускорить)

    16

  17. @Никита: не на тот ник нажал; про кавычки писал тебе, а не ShowMan’у.

    17
  18. Дмитрий

    В ускорении сайта всегда играет важную роль cache, недавно встречался на блоге одного сеошника отечественную разработку, как раз-таки от Мax. Но кэш можно соорудить и самому, правда, для этого нужно быть программистом.

    18

  19. Добавил статью в закладки — пока блог молодой и нагрузок вроде особых нет, но вот после работ над посещаемостью надо будет этим заняться.

    19
  20. Евгений

    Спасибо за советы! За полгода 2 горе-хостера закрывали мой аккаунт якобы за нагрузку, теперь буду знать как снизить риски…
    О кеше: немного не понятно- при обновлении блога кеш сам обновляется или надо вручную чистить?

    20

  21. Евгений, при использовании плагинов кэш сбрасывается автоматом

    21
  22. A1an

    ОЧень полезный пост, спасибо. Узнал много нового для себя)

    22

  23. Весьма полезный совет, но даже при высоких посещаемостях ВП работает вполне нормально, разве что wp-cache, бывает, надо!

    23

  24. А БД автоматически не стирает «revision»? или нельзя както это настроить?

    24
  25. kinozalov

    Спасибо большое за подборку, а то я уже начал потихоньку на ДЛЕ съезжать из-за того, что блоги грузят сервер. Хостер предупредил-что если я не уменьшу нагрузку на сервер, то отключит меня.

    25

  26. полезная статья, благодарю

    26

  27. Даждаться бы третий версии вордпресса. Да, вордпресс хостинг грузит, меня из за этого выгоняли с хостинга пару раз.

    27

  28. Ушел делать оптимизацию!!!

    28
  29. Syt

    WP Super Cache или Hyper Cache какой из этих плагинов посоветуете ? И в чем их принципиальное отличие?

    29

  30. Интересные варианты, не знал о них, спасибо.

    Я в основном использую css compress, ну и плагинов по минимуму. А все равно при этом меньше 17 метров памяти не кушает. Да еще и притормаживает иногда, когда пост новый пишешь.

    30

  31. спасибо за такую подробную инструкцию, пофиксил и свой блок, особенно понравилось удаление лишних записей с БД, реально помогло 🙂

    31

  32. думаете третий вордпресс будет летать ? после того как его с MU обьеденят — начинка и аппетиты только разрастутся

    32

  33. Попробывал. Блог и вправду стал быстрей работать. Поздравляю с повышением CY.

    33

  34. @Pensioner: 3-й как и последующие версии ничего с точки зрения оптимизации движка кардинальные изменения врядли получат. По основаной причине — бесплатная cms, имхо. Смотри тот же двиг ДЛЕ — запросов к БД в разы меньше))

    34

  35. Плагины — зло WP, из-за того что народ плохо знаком с элементарными вещами в php, бегут устанавливают всякие плагины которые, непонятно зачем, творят sql запросы ( иногда даже очень не грамотные, в плане синтаксиса ).

    Хотя есть такие вещи где без плагинов не обойдешься рядовому пользователю, но такое редкость.

    35

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

    36

  37. Использование относительных путей практически ничем не поможет.

    Еще я бы посоветовал в ручную редактировать шаблоны под себя, убирать мусор, заменять функции выводящие название блога и описание на простой текст. Убрать ненужный мусор html страницы может весить на 1-4% меньше, будет грузится быстрее и меньше напрягать сервер

    37

  38. Спасибо за статью 🙂 По-поводу второго варианта кэширования интересно, попробую. Да и с плагинами (стоял супер кэш — снес) думал, что динамика работать с ними не будет. Попробую WP File Cache и DB Cache в локалке. Не понял только какой плагин у Вас стал при этом медленее? Или это опечатка и имелось в виду «плагинЫ». Чего и насколько стало медленней работать?

    38

  39. Самое оптимальное, наверное, это использование меньшего числа различных плагинов. Т.к они в основном и нагружают блог.

    39

  40. Ускорение дело конечно хорошее, но не деньги, притом у меня хостер и так прекрасно держит блог, просто нужно сносить ненужные плагины.

    40

  41. Я всегда так делаю и всем советую!

    41

  42. провел эксперимент на своем блоге, большинство советом которые здесь рассмотрены применил на своем блоге, не на много но результат есть, автору спасибо!

    42


Статистика


Rambler's Top100