GoGetLinks — самая выгодная биржа рекламных обзоров

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

22 декабря, 2009 | Рубрика: Настройка WordPress

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

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

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

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

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

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

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

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

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

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

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

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

  • удалить строку с информацией о номере установленной версии WordPress. Она не несет никакой полезной нагрузки, и более того, является опасной, т.к. некоторые варианты взлома применимы только к определенным версиям WordPress, а из этой строки как раз очень удобно узнавать текущую версию вашего движка. Выглядит эта строка обычно так:
    <meta name="generator" content="WordPress <?php bloginfo('version'); ?>" />
  • заменить URL до вашего файла таблицы стилей CSS, используемого в вашей теме оформления WordPress на статический. В коде HEADER.PHP это строка:
    <link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
  • заменить URL до иконки favicon.ico на статический. Вы не знаете для чего нужна иконка под названием FAVICON.ICO? Она будет отображаться, например, в поисковой выдаче слева от названия вашего вебсайта или же в браузерах (в адресной строке или перед названием страницы на вкладках), при открытии страниц вашего блога. У моего блога это иконка желтой лампочки. Если у вас еще нет FAVICON.ICO, то обязательно создайте ее и пропишите путь к ней в HEADER.PHP. Она придаст вашему блогу индивидуальность и узнаваемость (подробнее об этом читайте в этой статье - Сделайте ваш сайт более заметным с помощью Favicon (фавикон): создание иконки favicon.ico и размещение ее на своем вебсайте). В оригинальном HEADER.PHP (из папки с темой WordPress) строка с заданием пути до FAVICON.ICO может выглядеть примерно так:
    <link rel="shortcut icon" type="image/ico" href="<?php bloginfo('template_directory'); ?>/favicon.ico" />
  • заменить URL до вашего фида (Rss ленты) на статический. Что такое RSS лента и для чего ее обязательно нужно использовать на блоге вы можете почитать в этой статье - Для чего нужна и как должна выглядеть RSS лента новостей вашего сайта. В коде HEADER.PHP это строка:
    <link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" />
  • заменить URL до на статический. В коде HEADER.PHP это строка:

    <link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />

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

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

<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" />
<!-- leave this for stats -->
<link rel="shortcut icon" type="image/ico" href="<?php bloginfo('template_directory'); ?>/favicon.ico" />
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
<link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" />
<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
<script type="text/javascript" src="<?php bloginfo('stylesheet_directory'); ?>/taber.js"></script>

а так после замены URL на статичные:

<link rel="shortcut icon" type="image/ico" href="http://ktonanovenkogo.ru/wp-content/themes/Reafew/favicon.ico" />
<link rel="stylesheet" href="http://ktonanovenkogo.ru/wp-content/themes/Reafew/style.css" type="text/css" media="screen" />
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="http://ktonanovenkogo.ru/feed" />
<link rel="pingback" href="http://ktonanovenkogo.ru/xmlrpc.php" />
<script type="text/javascript" src="http://ktonanovenkogo.ru/wp-content/themes/Reafew/taber.js"></script>

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

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

и

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

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

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

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

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

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

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

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

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

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

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

Установка и настройка плагина WP Tuner для WordPress, позволяющего узнать количество запросов к базе данных при загрузке страницы блога

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

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

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

Плагин WP Tuner для WordPress

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

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

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

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

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

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

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

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

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

 Плагин кэширования Hyper Cache
Снижение потребляемой памяти


Спасибо Вам за добавление этой статьи в
Подписаться на обновления по E-mail RSS
Получать обновления на E-mail
GoGetLinks — самая выгодная биржа рекламных обзоров
Кстати, тоже интересно почитать:
Рубрика : Настройка WordPress Теги : , , ,

Комментарии
23 декабря 2009

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

Дима

23 декабря 2009

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


23 декабря 2009

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


25 декабря 2009

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

<?php bloginfo(); ?>

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

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

берутся уже из массива, а не из БД. Так что заменять эти запросы вообще нет смысла. А если еще учитывать, что если Вы захотите что-то изменить – вампридется лезть в код блога, то это вообще маразм. Вы же были должны сами заметить, что после всех изменений запроса bloginfo, количество запросов к БД не уменьшилось.


25 декабря 2009

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


25 декабря 2009

Спасибо за WP Tuner


25 декабря 2009

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


13 января 2010

Больше всего ела память функция “Самые популярные посты”


14 января 2010

Алина: согласен, у меня тоже самое.


24 января 2010

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


29 января 2010

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


29 января 2010

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


29 января 2010

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


1 февраля 2010

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


8 февраля 2010

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

<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" />

, однако в информации о странице всё равно видна версия WP. Или может быть этот тег по другому объявлен?

Аркадий

9 февраля 2010

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

remove_action( 'wp_head', 'wp_generator' );

9 февраля 2010

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

Аркадий

21 февраля 2010

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


22 февраля 2010

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


22 февраля 2010

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


7 апреля 2010

Плагин суперкеш рулит, если у вас много трафа, то после установки этого плагина вы получите почти статичный сайт…


4 августа 2010

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


28 августа 2010

Написать

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

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


Это не спам.

Subscribe without commenting

» Подписаться на комментарии к этой статье по RSS