WordPress как на ладони
wordpress jino

Избавляемся от лишних обращений к данным

ВАЖНО!

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

Не надо реализовывать советы из этой статьи!

Просто ознакомьтесь, возможно появятся какие-то свои идеи по оптимизации...

1. Избавляемся от лишних обращений к данным

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

<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" />

По аналогии желательно заменить всё: <?php language_attributes(); ?>, <?php bloginfo('rss2_url'); ?> и т.д. и т.п.

Там где вызываемая переменная встречается несколько раз, желательно вызывать ее один раз. Скорее это можно отнести к <?php bloginfo('template_url'); ?>. Для наглядности приведу код.
Такую запись:

...
<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/scripts/prototype.lite.js"></script>
<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/scripts/moo.fx.js"></script>
<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/scripts/moo.fx.pack.js"></script>
...

Можно записать так:

...
$templateurl = get_bloginfo('template_url');
<script type="text/javascript" src="<?php echo $templateurl ?>/scripts/prototype.lite.js"></script>
<script type="text/javascript" src="<?php echo $templateurl ?>/scripts/moo.fx.js"></script>
<script type="text/javascript" src="<?php echo $templateurl ?>/scripts/moo.fx.pack.js"></script>
...

Поясню: мы заранее определяем путь до шаблона и помещаем его в переменную $templateurl, а затем везде, где нужно написать путь до шаблона пишем <?php echo $templateurl ?>. Если sidebar и footer вызывать через require или include (require ('sidebar.php');), вместо стандартной функции WP - get_header();, то один раз определив переменную $templateurl (где нибудь в header), её можно будет использовать и в файлах sidebar.php, footer.php.

2. Небольшая оптимизация в комментариях

#1. Правим код, связанный с выводом даты:

<?php printf('%1$s at %2$s', get_comment_date(),  get_comment_time()) ?>

Меняем его на:

<?php printf('%1$s в %2$s', get_comment_date('d.m.Y'),  get_comment_time('H:i')); ?>
//Или можно записать так:<?php echo date( 'd.m.Y в H:i', strtotime($comment->comment_date) ); ?>

Таким изменением, мы заранее определяем формат даты, и функции get_comment_date() или get_comment_time() уже не запрашивают формат даты из настроек сайта. Информацию о форматах даты, чтобы далеко не ходить, можно посмотреть в настройках WP (настройки->общие).

Экономия: 2 обращения к данным с каждого комментария.

#2. Заменяем ссылку на комментарий в дате комментария

Дата комментария анкор ссылки, если она у вас есть конечно, обычно она присутствует. Вместо функции, которая получает адрес ссылки (get_comment_link()) пишем так: <a href='#comment-<?php echo $comment->comment_ID ?>'>Здесь дата</a>.

Экономия: минус еще по одному обращению к данным с каждого комментария.

Для наглядности выше написанного

// так выглядит кусок кода комментариев в WordPress (по дефолту):
<a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ) ?>"><?php printf(__('%1$s at %2$s'), get_comment_date(),  get_comment_time()) ?></a>

// я предлагаю чтобы он выглядел так:
<a href="#comment-<?php echo $comment->comment_ID ?>"><?php echo date( 'd.m.Y в H:i', strtotime($comment->comment_date) ); ?></a>

Такое несложное изменение и если у статьи, например, 20 комментариев экономия составит 60 обращений к данным.

Продвижение сайтов www.seop.ru

продвижение сайтов www.seop.ru

www.seop.ru

Избавляемся от лишних обращений к данным 35 комментариев
  • Ден

    В WordPress 4.6.1 в файле wp-includes/functions.php не обнаружена функция wp_load_alloptions() . И еще хотелось бы услышать ваши мысли по поводу этого "велосипеда", зачем ВП делает эти лишние 80 обращений к БД, если можно использовать переменную?

    Ответитьгод назад #
    • Kama4464

      Вы вставку в начале читали? Не надо использовать советы из этой статьи - статья старая и уже не нужная. Удалять жалко, как память о своем незнании держу ... unknw

      Ответитьгод назад #
      • Ден

        Вот черт, не заметил smile Предложу, от имени таких-же невнимательных : может блоки "не актуально" сделать красного цвета и картинку вроде "не влезай убьет" добавить smile, чтоб вырви глаз было smile

        Ответитьгод назад #
  • Ivan

    Kama, можете объяснить почему не стоит заменять все вызовы типа bloginfo( ‘charset’ ); или language_attributes() и т.д. на статические? эффект будет незначительным?

    • Kama4464

      Да, это ненужная возня, все данные берутся из кэша в этом случае! bloginfo() там смотри скорость выполнения. Такая экономия "на спичках" никому не нужна!

Здравствуйте, !

Ваш комментарий