Тема Дня »

Обновил тему WordPress на этом блоге. Старый вариант Arthemii меня устраивал во всем, кроме моральной древности. Функциональность тем значительно увеличилась с 2008 года.
Проблема замены состояла в том, что старая тема на моём блоке постоянно допиливалась в ручную, и перенести все созданное в новую тему было практически невозможно. Но пришлось чем-то жертвовать.
Новая Arthemia была скачена, максимально отстроена и установлена.

Читать полностью »
Партнерский интернет-магазин

Создание, оптимизация и продвижение интернет-магазина.

Создать форум

Как создать “с нуля” и сделать популярным форум. Полезно, интересно и подробно о phpbb3.

WordPress

Рекомендации по настройке и оптимизации WordPress. Плагины, темы, шаблоны.

Дайджест блогосферы

Каждую неделю публикую подборку из пяти наиболее интересных статей.

Конкурсы

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

Главная » WordPress

Ускоряем WordPress на 17% за счет числа запросов к базе данных и скриптов.

Добавлено на 30.11.2012 – 11:03 пп23 Комментарии

WordPress запросы к базе данных

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

Мы уменьшим число запросов к базе данных и перенесем скрипты из шапки в подвал (header.php — footer.php )

Уменьшаем число запросов к базе данных.

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

Как посмотреть число запросов к базе данных WordPress?

Посмотреть количество запросов к базе данных WordPress и время за которое генерируется (создаётся) страница можно вставив в шаблон темы (обычно – footer.php перед тегом </body>) вот этот скрипт:

Запросов <?php echo get_num_queries(); ?>, за <?php timer_stop(1); ?> секунды.

В самом низу странице появится результат.

У меня получилось:

  • Для главной страницы: Запросов 116, за 0,220 секунды.
  • Для страницы статьи: Запросов 108, за 0,216 секунды.

Сменив тему на Twenty Ten, получил 86 запросов за 0,106 секунды.

30 лишних запросов к базе данных – плата за фишки, плагины и, очень часто, криворукость создателя (верстальщика) темы. 30 – это за каждый просмотр страницы. При посещаемости хотя бы 100 человек в сутки, если каждый из них загрузит 2 страницы: 30*100*2 = 6000 – это только “лишних” запросов. А если посещаемость 1000 человек?

Заменяем запросы к базе данных на чистый html.

Начало файла header.php в редакторе тем выглядит так:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
<meta name='yandex-verification' content='4a93843211243dfb' />
<meta name='wmail-verification' content='b9553accaa2a6161' />
<title><?php bloginfo('name'); ?> </title>
<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" /> <!-- leave this for stats -->
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="<?php bloginfo('rss2_url'); ?>" />
<link rel="alternate" type="text/xml" title="RSS .92" href="<?php bloginfo('rss_url'); ?>" />
<link rel="alternate" type="application/atom+xml" title="Atom 0.3" href="<?php bloginfo('atom_url'); ?>" />
<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
<link rel="icon" href="<?php echo get_option('home'); ?>/wp-content/themes/arthemia/images/favicon.ico" />
<link rel="shortcut icon" href="<?php echo get_option('home'); ?>/wp-content/themes/arthemia/images/favicon.ico" />

Итог выполнения запросов к базе данных можно посмотреть в исходном коде страницы.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="ru-RU">
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name='yandex-verification' content='4a93843211243dfb' />
<meta name='wmail-verification' content='b9553accaa2a6161' />
<title>Делитант - журнал о заработке в Интернете</title>
<meta name="generator" content="WordPress 3.4.2" /> <!-- leave this for stats -->
<link rel="stylesheet" href="http://delitant.ru/wp-content/themes/arthemia1/style.css" type="text/css" media="screen" />
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="http://delitant.ru/feed" />
<link rel="alternate" type="text/xml" title="RSS .92" href="http://delitant.ru/feed/rss" />
<link rel="alternate" type="application/atom+xml" title="Atom 0.3" href="http://delitant.ru/feed/atom" />
<link rel="pingback" href="http://delitant.ru/xmlrpc.php" />
<link rel="icon" href="http://delitant.ru/wp-content/themes/arthemia/images/favicon.ico" />
<link rel="shortcut icon" href="http://delitant.ru/wp-content/themes/arthemia/images/favicon.ico" />

Теперь просто заменяем участок кода в шаблоне на тот-же участок исходного кода страницы (все строчки, кроме <title>)

Добавляем код и проверяем получившее количество запросов:

число запросов к базе данный

  • Запросов 105, за 0,187 секунды.

Итого: 116 – 105 = 11 (минус 11 запросов).

Надеюсь принцип действий понятен.

Все скрипты в подвал.

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

<script type="text/javascript" src="http://delitant.ru/wp-content/plugins/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="http://delitant.ru/wp-content/plugins/syntaxhighlighter/scripts/shBrushCpp.js"></script>
<script type="text/javascript">
SyntaxHighlighter.all();
</script>

Скрипты отвечают за различные функции темы, но существенно “тормозят загрузку” страницы. Поэтому смело вырезаем их и переносим в подвал – файл footer.php перед тегом </body>.

Теперь в первую очередь будут загружаться “легкие элементы” (вёрстка и стили), а после них уже скрипты и пользователь увидит вашу страницу раньше.

Какова эффективность выполненных действий? В прошлый раз страница сайта загружалась за 4,14 секунды, а сейчас:

время загрузки страницы

Еще на 17% быстрее. По-моему неплохо!

Серия статей “Разгоняем WordPress”:

  1. Как уменьшить время загрузки страницы в 2 раза;
  2. Ускоряем WordPress за счет числа запросов к базе данных и скриптов.

Это не последняя статья о уменьшении времени загрузки страниц WordPress. Подписывайтесь на блог, чтобы не пропустить!

P.S. Сколько запросов к базе данных выполняется на страницах Ваших блогов? Давайте сравним!

GD Star Rating
loading...
Ускоряем WordPress на 17% за счет числа запросов к базе данных и скриптов., 4.5 out of 5 based on 12 ratings

Буду благодарен, если поделитесь этой статьей в социальных сетях:

Метки: ,

23 Комментарии »

  • Dana:

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

    [Ответить]

    Делитант:

    Время загрузки, не скорость…

    [Ответить]

  • 10 на главной, 20-25 в постах.

    [Ответить]

    Делитант:

    Это просто нереально…

    [Ответить]

    SwaEgo:

    На сайте в футере всё написано. Нет ничего нереального, уметь надо просто.

    [Ответить]

    Делитант:

    Это я так выразил своё восхищение. Действительно «надо просто уметь».

  • Время загрузки зависит от кучи факторов. У меня страничка загружется быстро, а как глюканет хостинг, дык и долго.. Хотя оптимизация, несомненно, важна и нужна

    [Ответить]

    Делитант:

    Хостинг, пожалуй, единственный параметр, который не зависит от нас, но от которого зависим мы.

    [Ответить]

  • Делитант, ставите

    DB Cache Reloaded Fix
    Optimize DB
    WP File Cache
    WPLANG Lite

    причем это все дружит с gd star rating 😉 зря у Вас нет его, очень повышает ctr вы выдаче.
    у меня ща на тестовом сайтике 2 запроса на главной после кеша.
    [SQL :2] [Time: 0.334] [Mem: 26.41mb]
    Ну и сам шаблон надо подмарафетить 😉
    Можно конечно еще поставить на серверную часть eaccelerator или APC…но они с звездочками рейтинга не дружат, зато сайт летать будет.
    (на eacceleratore будут результаты лучше, но он не сильно разрабатывается)

    [Ответить]

    Делитант:

    Обязательно приму к сведенью, буду ставить — напишу. Не понял только чего у меня нет, что повышает ctr?

    [Ответить]

  • А не …звездочки у Вас есть в конце статьи, но они не работают.
    Ускоряем WordPress на 17% за счет числа запросов к базе данных и скриптов., 5.0 out of 5 based on 1 rating

    из-за этого
    display: none !important

    т.е. скрытый контент.

    Просто обновите версию GD STAR RATING до последней. И галочку в настройках поставьте для работы с кешированием. После этого отправьте сайт на переиндексацию посредством отправки карты сайта в Инструментах Вебмастера Гугла. Также для корректной работы плагина звездочек нельзя минифицировать жава-скрипты, а вот с цсс точно уже не помню.

    Проверял c Hyper, Super и Tatal кешами…но лучшие результаты именно с вышеперечисленными плагинами. К сожалению настроить работы с APC и eAccelerator не получилось.

    DB Cache Reloaded Fix — это для версии выше ВП 3+. Кеширует запросы к базе. Эффект очень заметный. Например в Тотал Кеш вроде вобще не кеширует, хотя функция есть.
    Optimize DB — чистит лишний мусор в базе. На работающем сайте лучше сделать дамп перед использованием. Можно использовать раз в месяц, а потом отключать.
    WP File Cache — файловый кешер, результаты тоже видно =)
    WPLANG Lite — облеченная локализация админки, освобождает пару метров оперы.

    [Ответить]

    Делитант:

    Спасибо за такой расширенный комментарий. С GD STAR RATING действительно непонятно, почему закрыт от индексации. Когда ставил — всё нормально работало…

    [Ответить]

  • + удалите из шапки meta name=»generator» content=»WordPress х.х.х
    зная версию ВП сайта проще ее ломануть.

    [Ответить]

    Делитант:

    Сделаю.

    [Ответить]

  • Не знаю чего, но после включения WP Minify у меня навернулся сайт, открывалась только главная.

    [Ответить]

    Делитант:

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

    [Ответить]

  • Интересно с вами, но не очень понятно. Посоветуйте, где и как найти хороших верстальщиков сайтов, не криворуких. Чтобы сайт летал и при этом был красивым и функциональным. Очень боюсь самописцев, хочу на WordPress, так как рискую стать заложницей эксклюзивной криворукости.) Сейчас, все кому не лень стали спецами по созданию сайтов, но на деле все оказывается не так. Я их прошу сделать web дизайн, а они мне картинку в jpg присылают, которую я же им и отправила, только добавив пару кнопочек, и те не там, где нужно(((. Грустно…

    [Ответить]

    Делитант:

    Не знаю что Вам ответить. Я живу по принципу — хочешь сделать что-то хорошо, сделай это сам. Вы абсолютно правы, на счёт «специалистов» по созданию, а особенно по продвижению и СЕО-оптимизации сайтом, их много, но количество не переходит в качество. Жаль, но никого посоетовать не могу.

    [Ответить]

  • Ivan:

    Есть ли какие идеи, почему при включении плагина Huper Cahce перестают напрочь загружаться «звездочки» рейтинга GD Star Rating. Хотя, если залогинишься (или админом или любым другим авторизированным на сайте), все работает. Уже сломал мозг с этим — ничего не могу найти.
    Подскажите, пожалуйста.

    [Ответить]

  • А у меня на сайте 41 / 0,205 / 11.7mb, но не устраивает это меня хочу тоже 20-30. Но вот новости нужны на сайдбаре, убираю их получаю 16 запросов, но без них никуда.

    [Ответить]

  • Нужный материал, я сейчас как раз занимаюсь ускорением блога и воспользуюсь вашими советами, спасибо!

    [Ответить]

  • Ян:

    Статья актуальна на 2016 год? Как никак 4 года прошло. Кто-нибудь проверял, работает ли на новых версиях ВП этот способ ускорения?

    [Ответить]

Оставить комментарий!

Добавить свой комментарий ниже, или Архив с вашего собственного сайта. Вы также можете Comments Feed через RSS.

Будьте вежливы. Держите его в чистоте. Оставайтесь на тему. Не спам.

Вы можете использовать эти теги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Это Gravatar поддержкой сайта. Чтобы получить свой собственный глобально признанных-аватара, пожалуйста, зарегистрируйтесь на Gravatar.