Оптимизация WordPress для снижения его нагрузки на сервер хостера — Часть 1 — Оптимизация темы Вордпресс, как узнать количество запросов к базе данных, плагин WP Tuner

Рубрика: WordPress для чайников

Доброго времени суток, уважаемые читатели блога KtoNaNovenkogo.ru. Сегодня я хочу поговорить о том, как снизить нагрузку на сервер хостинга, создаваемую вашим блогом на WordPress (как создать свой блог бесплатно). Другими словами, мы займется оптимизацией WordPress для снижения его нагрузки на сервер хостинга.

Wordpress - оптимизация

Мне недавно владелец хостинга (Доменное имя и хостинг для вашего будущего сайта) прислал письмо с предупреждением о том, что мой блог на WordPress создает нагрузку на сервер выше установленного для моего тарифа предела. Причем, это было уже второе предупреждение и поэтому, не дожидаясь третьего, я принялся за изыскание способов снизить нагрузку на сервер, которую создает мой блог на WordPress. Иначе говоря, я решил заняться тем, что называемся оптимизация блога на WordPress.

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

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

Оптимизация темы оформления (шаблона) WordPress для уменьшения количества запросов к базе данных при загрузке страниц блога

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

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

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

Для начала вам нужно будет получить доступ по FTP к файлам вашей темы оформления (шаблона) WordPress. Они находятся в папке:

/wp-content/themes/название_вашей_темы_оформления

Начнем, с уже упомянутого выше, HEADER, который вы можете найти в папке с вашей темой оформления (шаблоном) WordPress и открыть этот файл на редактирование, например, в продвинутом блокноте Notepad++. В HEADER находится достаточно много запросов к базе данных WP, которые спокойно можно заменить на статичные данные кода WordPress или же вообще удалить. В самом верху HEADER из вашей темы WordPress вы наверняка увидите следующий участок кода :

<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />

Нет, удалять его конечно же не надо, но вот немного видоизменить, убрав не нужные запросы к базе данных WP можно:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Ну вот, два запроса к базе данных WordPress в минус — пустячок, а приятно. Дальше — больше. Что еще можно заменить или удалить в HEADER. Давайте перечислим:

  1. Удалить строку с информацией о номере установленной версии WordPress. Она не несет никакой полезной нагрузки, и более того, является опасной, т.к. некоторые варианты взлома ВордПресс применимы только к определенным версиям, а из этой строки как раз очень удобно узнавать текущую версию вашего движка. Выглядит эта строка обычно так:
    <meta name="generator" content="WordPress <?php bloginfo('version'); ?>" />
  2. Заменить URL до вашего файла таблицы стилей CSS, используемого в вашей теме оформления (шаблоне) WordPress на статический. В коде HEADER это строка:

    <link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
  3. заменить URL (путь) до иконки favicon.ico на статический. Вы не знаете для чего нужна иконка под названием FAVICON.ICO в WordPress или сайте на любом другом движке? Дело в том, что иконка FAVICON будет отображаться, например, в поисковой выдаче Яндекса слева от названия вашего вебсайта или же в браузерах (в адресной строке или перед названием вебстраницы на вкладках), при открытии страниц вашего блога. Хорошая и броская иконка FAVICON способна существенно увеличить количество переходов из поисковой выдачи на ваш сайт.

    У моего WP блога это иконка имеет вид желтой лампочки. Если у вас еще нет FAVICON.ICO, то обязательно создайте ее и пропишите путь к ней в HEADER. Иконка FAVICON придаст вашему блогу индивидуальность и узнаваемость (подробнее об этом читайте в этой статье — Сделайте ваш сайт более заметным с помощью Favicon (фавикон): создание иконки favicon.ico и размещение ее на своем вебсайте). В оригинальном HEADER (из папки с темой WordPress) строка с заданием пути до FAVICON.ICO может выглядеть примерно так:

    <link rel="shortcut icon" type="image/ico" href="<?php bloginfo('template_directory'); ?>/favicon.ico" />
  4. Заменить URL (путь) до вашего фида (RSS ленты) в WordPress на статический. Что такое RSS лента и для чего ее обязательно нужно использовать в Вордпресс вы можете почитать в этой статье — Для чего нужна и как должна выглядеть RSS лента новостей вашего сайта. А так же, я уже писал про то, как правильно настроить RSS ленту в WordPress. В коде HEADER за это отвечает строка:
    <link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" />
  5. Заменить URL (путь) до Pingback (рассылка сведений о вашей статье по всем адресам, которые вы в этой статье упомянули) на статический. В коде HEADER это строка:
    <link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />

А откуда взять все эти статические пути для WordPress, которые мы должны прописать заместо динамического кода PHP? Есть довольно простой способ. Вам нужно всего лишь открыть любую вебстраницу вашего WP блога в браузере и посмотреть ее исходный код. Для этого, щелкаете правой кнопкой мыши в окне браузера и выбираете из контекстного меню что-то вроде «Исходный код страницы» или «Исходный код», в зависимости от того, в каком именно браузере открыта эта вебстраница. Теперь ищите там нужные строки и копируете пути для вашего блога на Вордпресс к файлу CSS, к фиду (RSS ленте) и т.п.

Дело в том, что при создании вебстраницы, динамический PHP код интерпретируется в реальные статичные URL (пути). Вот именно их мы скопируем из кода WordPress по очереди и вставим в HEADER вместо участков кода. Вот так выглядел блок кода WP до преобразования:
Оптимизация темы WordPress

а после замены URL на статичные, участок код WordPress файла HEADER будет выглядеть так:
Снижаем нагрузку WordPress

Еще определенное количество запросов к базе WordPress данных в минус. Ну и конечно же, то о чем мы говорили в начале статьи. Найдите в HEADER участки кода отвечающие за динамический вывод названия и описания вашего WP блога:

<?php bloginfo('name'); ?>

и

<?php bloginfo('description'); ?>

Их нужно будет заменить, соответственно, на статические название и описание вашего WordPress блога. Если у вас вдруг после сохранения HEADER вместо русских букв вылезут кракозябры, то откройте файл повторно на редактирование в Notepad++, выберите из верхнего меню пункт «Кодировка» — «Преобразовать в UTF-8 без BOM», а затем опять сохраните файл.

Если у вас еще в HEADER имеет описание верхнего меню для Вордпресс, то там можно вручную прописать ссылку на главную страницу блога, заменив динамический код для формирования этой ссылки. В оригинале HEADER эта строка кода может выглядеть так:

<a href="<?php echo get_option('home'); ?>/">Главная</a>

ее надо будет заменить на:

<a href="http://ktonanovenkogo.ru/" title="KtoNaNovenkogo.ru - в помощь начинающим вебмастерам | Создание и продвижение сайтов на Joomla, блогов на WordPress, форумов на SMF, интернет-магазинов на VirtueMart, заработок на сайте">Главная</a>

Теперь перейдем к файлу FOOTER, который так же должен находиться в папке с вашей темой оформления (шаблоном) для WordPress по адресу:

/wp-content/themes/название_вашей_темы_оформления

В нем можно заменить строку выводящую информацию о том, что все права защищены, примерно такого вида:

<p class="alignleft">&copy; <?php echo date("Y"); ?>  <?php bloginfo('name'); ?>  Все права защищены   <br />

на что-нибудь такое, например:

<div class="center"><a href="http://ktonanovenkogo.ru/" title="KtoNaNovenkogo.ru - блог о создании сайтов на Joomla, блогов на WordPress, форумов на SMF, интернет-магазинов на VirtueMart, продвижении и заработке на сайте"><h3 class="description">&copy; KtoNaNovenkogo.ru - все о создании сайтов на Joomla, блогов на WordPress, форумов на SMF, интернет-магазинов на VirtueMart, SEO продвижение и заработок на сайте </h3> </a></div>

Кроме того, что в этом случае убираются лишние запросы WordPress к базе данных, здесь еще и создается ссылка с нужными ключевыми словами, которая будет вести на главную со всех страниц WP блога (Внутренняя оптимизация сайта). Ну и для повышения значимости этих ключевых слов, они заключены в тег акцентирования H3 (Теги акцентирования (H1 -H6, STRONG, EM) – улучшаем внутреннюю оптимизацию сайта).

Ну и еще посмотрите, что в FOOTER по аналогии с описанным выше HEADER, можно еще модернизировать. У меня, например, в FOOTER дублируется верхнее меню WordPress и, следовательно, я так же как и в HEADER заменил динамический участок кода WP, описывающий ссылку на главную страницу, на статичный URL.

WP Tuner — как узнать количество запросов к базе данных блога на WordPress

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

Плагин WP Tuner устанавливается на WordPress стандартным способом, а именно:

Если при установке плагина WP Tuner на Вордпресс у вас возникли какие-либо затруднения, то можете обратиться к материалам этой статьи — Решение возможных проблем при установке плагинов на WordPress. Теперь можно зайти в админку WordPress и ознакомиться с настройками плагина WP Tuner. В админке WP выбираем из левого меню Настройки -> WP Tuner.

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

Плагин WP Tuner для WordPress
Обычные посетители блога, естественно, этого безобразия, внесенного плагином WP Tuner, видеть не будут, только администратор WP блога, т.е. вы.

Но посмотреть число запросов к базе в WordPress данных можно и не прибегая к услугам плагинов WordPress. Для этого нужно получить доступ к файлам вашего блога по FTP и открыть на редактирование, например, файл:

/wp-content/themes/название_вашей_темы_оформления/footer.php

и где-нибудь в код FOOTER нужно вставить следующую конструкцию (место вставки кода будет определять область вывода числа запросов к базе данных Вордпресс в футере или по другому — подвале вашего блога):

<?php if (is_user_logged_in()) { ?>
    <?php echo get_num_queries(); ?> queries in <?php timer_stop(1); ?> seconds.
<?php } ?>

В результате, после загрузки страницы вашего WP блога, в самом низу (в области футера) вы увидите сколько при этом было сделано запросов к базе данных WordPress:

Как узнать сколько запросов к базе данных происходит при загрузке страницы вашего блога на WordPress

Эта информация будет доступна только авторизованным пользователям блога. Т.о., если у вас на WP блоге регистрация отключена, то эту надпись о количестве сделанных запросов к базе данных, будете видеть только вы.

У Евгения Попова имеется видекурс по WordPress, который стоит того, чтобы с ним ознакомиться.

Вы так же можете ознакомиться с другими материалами по WordPress:

Удачи вам! До скорых встреч на страницах блога KtoNaNovenkogo.ru

Поиск:
Робот считает, что Вам это тоже может быть интересно:
Очень обяжете, если воспользуетесь этим блоком кнопок:
RSS
Рубрика : WordPress для чайников
Наверх

Комментарии
23-12-2009 в 11:25

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

Дима

23-12-2009 в 11:43

Admin, у тебя PHP WP код полностью не видно, те если сточка из кода длинная, то видна она не целиком.

sup3rstar

23-12-2009 в 12:06

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

Nick Lavu

25-12-2009 в 14:21

Дмитрий, хочу Вас огорчить. Оптимизация вордпресс таки образом ничего не даст. В самом начале загрузки wordpress в базу данных отправляется вот такой запрос:

<?php bloginfo(); ?>
, который берет из БД всю необходимую информацию о блоге. И все остальные запросы, например
<?php bloginfo('description'); ?>
берутся уже из массива, а не из БД. Так что заменять эти запросы вообще нет смысла. А если еще учитывать, что если Вы захотите что-то изменить — вам придется лезть в код WP блога, то это вообще маразм. Вы же были должны сами заметить, что после всех изменений запроса bloginfo, количество запросов к БД не уменьшилось. Следовательно нагрузка WordPress на сервер не изменилась.

Ян

25-12-2009 в 20:18

Ян: не заметил, т.к. делал все возможные манипуляции по уменьшению нагрузки Вордпресс на сервер в очень большой спешке (хостер вынес третье предупреждение и нужно было в темпе что-то предпринять). Померил количество запросов уже после всех манипуляций по оптимизации WordPress.

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

Дмитрий

25-12-2009 в 21:10

Спасибо за плагин WP Tuner

Sosnovskij

25-12-2009 в 22:29

Sosnovskij: только что бродил по вашему блогу, а вы в это время откоментировали мою статью. Это как то связано или просто совпадение?

Дмитрий

13-01-2010 в 2:32

Больше всего нагрузку давала на память функция «Самые популярные посты»

Алина

14-01-2010 в 14:08

Алина: согласен, у меня тоже самое. Оптимизация нагрузки заключается еще и в отключении не самых необходимых плагинов вордпресс.

Дмитрий

24-01-2010 в 0:09

Почему-то миф уменьшении нагрузки ручным прописыванием настроек блога в теме оформления WP кочует из блога в блог. Но (выше написал Nick Lavu) большая часть настроек WP блога извлекаются одним запросом — из таблицы wp_options. А вот некоторые плагины, или экзотические темы, могут быть создавать повышенную нагрузку и в целях оптимизации их следует отключить.

andrey

29-01-2010 в 18:05

Спасибо за пост! Для меня все эти вопросы оптимизации вордпресс и снижения нагрузки на сервер, очень актуальны а описания по замене строчек в теме WP ранее не встречал. Буду экспериментировать ;)

Snezok

29-01-2010 в 18:56

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

Сейчас смотрю в сторону MaxSite CMS — очень хорошая блоговая система я считаю — последнюю неделю разбираюсь с ней — пока все нравиться. Что качается потребления ресурсов сервера (нагрузки) — просто сказка — в несколько раз меньше памяти жрет и запросов к базе данных по минимум.

По мне так — основной конкурент вордпресс.

Игорь

29-01-2010 в 23:11

Snezok: пожалуйста.

Игорь: слышал про MaxSite CMS, но пока еще не довелось попробовать. Возможно, что вы и правы. Вордпресс действительно достаточно монструозный движок и создает большую нагрузку на сервер хостинга, но очень уж популярный и что немаловажно, для него имеется огромное количество плагинов, которые позволяют реализовать кучу возможностей. К тому же WordPress можно оптимизировать для снижения нагрузки на сервер. А MaxSite CMS, я думаю, пока что, из-за ее относительной не распространенности, расширений много иметь не может. Или я ошибаюсь?

Дмитрий

1-02-2010 в 16:54

добрый день!

я бы хотел чуток добавить по поводу снижении нагрузки WP на сервер.

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

cava150

8-02-2010 в 17:39

Скажите, а где ещё может быть запрятан мета-тег с информацией о версии WordPress. Просто ни в хидере, ни в остальных файлах темы не нашёл строку такого вида:

<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" />
, однако в информации о странице всё равно видна версия WP. Или может быть этот тег по другому объявлен?

Аркадий

9-02-2010 в 0:48

Аркадий: еще об этом не писал, но обязательно напишу, а пока, если кратко, то для удаления информации о текущей версии WordPress из исходного кода страниц вам нужно будет добавить в файл functions.php из вашей темы оформления (/wp-content/themes/название-вашей-темы-оформления/functions.php)

строку:

remove_action( 'wp_head', 'wp_generator' );

Дмитрий

9-02-2010 в 10:54

Дмитрий: спасибо, помогло.

Аркадий

21-02-2010 в 22:35

Спасибо, Дмитрий. Блестящая серия статей по оптимизации WordPress, но есть вопросы. Плагин WP Tuner при переходе из админки на сайт не показывает количество обращений к базе данных в футере, а показывает это в самом плагине, но непонятно к какой странице блога. Подскажите, пожалуйста, в чем дело.

Марина

22-02-2010 в 1:08

Марина: WP Tuner отображается на страницах блога и в админке под футером. Но на страницах блога его панель будет видна только администратору вордпресс. Обычные посетители его не увидят. Рискну предположить, что возможно вы заходили на сайта не под админом, хотя, наверное, это вряд ли.

Дмитрий

22-02-2010 в 8:34

Заходила в WP админом, сейчас удалила плагин WP Tuner, прописала в коде футера и все получилось. Число обращений на разных страницах от 14 до 25. Это нормально?

Марина

7-04-2010 в 23:33

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

Андрей

4-08-2010 в 1:10

А ещё вот есть Really Static такой плагин для WordPress, говорят что это даже лучше.

CyberMax

28-08-2010 в 0:35

Wanderfuul sites

Nmaes

24-11-2010 в 20:21

Спасибо. Сайт полетел в закладки.

Xvorb

12-12-2010 в 22:21

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

Одесский Бомж

28-12-2010 в 21:28

Настроил всё по описанию, обращений к базе данных как было 56, так и осталось. Убрал слайдшоу из сайдбара, обращений уменьшилось до 42. И теперь так и плавает — то 57, то 42, не пойму. Обращения проверяю при помощи кода, установленного в подвале:

id == 1 ) {

echo " MySQL: " . get_num_queries () . " запросов за "; timer_stop (1);

echo " секунд. Потребление памяти: ". round (memory_get_usage ()/1024/1024, 2) . " MB ";

var_dump ($GLOBALS['wpdb']->queries);

}

?>

Негодующий налогоплательщик

28-12-2010 в 23:40

Сделал всё как написано в статье. Результата не дало — обращение к базе данных не уменьшилось. 56. Убрал из сайдбара слайд шоу — кол-во обращений уменьшилось до 42. Но потом опять возросло до 57. И так и колеблется — 42-57.

Негодующий налогоплательщик

22-03-2011 в 0:50

Дмитрий говорит, что:

Ян: не заметил, т.к. делал все возможные манипуляции по уменьшению нагрузки Вордпресс на сервер в очень большой спешке (хостер вынес третье предупреждение и нужно было в темпе что-то предпринять). Померил количество запросов уже после всех манипуляций по оптимизации WordPress.

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

Автор вы класный мужик!!!

Терпеливый и смиренный, почти как Иисус Христос. Желаю Вам Божьих благословений и жизни вечной!

Антон

17-06-2011 в 6:51

Огромное спасибо. Читал несколько блогов на эту тему и нифига не понял. А тут всё понятно и ясно объясняется. Всё исправил у себя, хотя не могу убрать ссылки, что в футере на сайт вордпрес, они по защитой. Может подскажешь как эту защиту снимать?

Алексей

8-08-2011 в 5:07

Вроде уж написано кем то выше.

Замена строчек php кода на статически прописанные пути в давнном случае, НЕ снизит количество запросов к БД, по той простой причине, что запросы идут совсем из другого файла. Хуже от таких манипуляций не будет, но и эффекта это не даст...

Юрий

2-01-2012 в 22:52

Спасибо за отличную статью! Ясно, просто, наглядно. Ваш сайт оцениваю лучше, чем Попова.

Альберт

Написать

(обязательно)

(обязательно)

Ваш комментарий
Заключайте PHP и другой код в теги [php][/php]

Это не спам.

Подписаться без комментирования