Оптимизация блога - удаление лишнего кода в Wordpress
Monday, 07 Jul 08 в 23:09
Если вы занимались редактированием собственной Wordpress темы, то, наверное, уже видели множество тэгов, выполняющих тривиальные задачи, например: вывод названия блога, кодировки сайта и т.п. Все эти данные можно задать непосредственно в самом шаблоне без вызова специальных функций. Бытует мнение, что за счет сокращения обращений к базе данных вы можете выиграть в производительности блога в целом. Правда, практические испытания некоторых блоггеров, показали, что сокращение времени загрузки ресурса незначительное. Тем не менее, считаю, данную оптимизацию полезной вещью - скорость вполне может ощущаться при слабых каналах связи или высокой посещаемости проекта.
Тема не один раз затрагивалась в рунете, но подробного описания я так и не заметил. Считаю, для тех, кто только начинает разбираться в Wordpress нужно более глубокое рассмотрение данного вопроса. Собственно, поэтому и был создан данный пост. Продвинутые пользователи системы могут лишь проверить наличие ненужных php вставок у себя, пояснения можно не читать.
При написании вдохновился схожим по тематике постом от Владимира. Можно сказать, эта заметка рассказывает о том же, но с пояснениями и реальными примерами (с моего блога). Кроме того, думаю, не все мои читатели знакомы с рассматриваемой темой, поэтому, как говорится, приступим:
[raw]<?php language_attributes();?>[/raw] - отвечает за вывод данных о языке сайта и стране, где он располагается. Строка находится в header.php.
[raw]Было: <html xmlns=”http://www.w3.org/1999/xhtml” <?php language_attributes(); ?>>
Стало: <html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”ru” lang=”ru-UA”>[/raw]
В данном случае запись lang=”ru-UA” означает, что текст сайта на русском, а сам находится в Украине.
[raw]<?php bloginfo(’html_type’); ?> и <?php bloginfo(’charset’); ?>[/raw] - первая часть кода задает значение параметра, заданного с помощью name или http-equiv, вторая определяет кодировку HTML документа. Находятся в header.php. Чтобы понятнее было посмотрим пример:
[raw]Было: <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″ />[/raw]
[raw]<?php bloginfo(’name’); ?>[/raw] - выводит имя блога (в настройках админки поле Blog Title), встречается в шаблоне достаточно часто. Кстати, если вы используете плагин All in One SEO Pack, то он автоматически переписывает заголовки title, поэтому можете убирать из этого тэга весь код.
[raw]<?php bloginfo(’version’); ?>[/raw] - версия системы, находится в header.php. Можно написать значение вашей версии вручную, указать любое другое, дабы запутать злоумышленника, или вовсе удалить строку.
[raw]Было: <meta name=”generator” content=”WordPress <?php bloginfo(’version’); ?>” />
Стало: <meta name=”generator” content=”WordPress 2.5.1″ />[/raw]
Кстати, скрытие версии системы является одним из способов защиты блога, хотя ее и можно определить косвенно.
[raw]<?php bloginfo(’stylesheet_url’); ?>[/raw] - указывает файл стилей, находится в header.php.
[raw]Было: <style type=”text/css” media=”screen”>@import url( <?php bloginfo(’stylesheet_url’); ?> );</style>
Стало: <link rel=”stylesheet” href=”http://tods-blog.com.ua/wp-content/themes/minyx-20-lite/style.css” type=”text/css” media=”screen” />[/raw]
[raw]<?php bloginfo(’rss2_url’); ?>[/raw] - задает адрес RSS фида, может находиться в файлах header.php, sidebar.php и footer.php. Если вы используете FeedBurner, то пишите адрес именно от сервиса, а не стандартный.
[raw]Было: <link rel=”alternate” type=”application/rss+xml” title=”<?php bloginfo(’name’); ?> RSS Feed” href=”<?php bloginfo(’rss2_url’); ?>” />
Стало: <link rel=”alternate” type=”application/rss+xml” title=”Tod’s Blog. Моё видение интернета RSS Feed” href=”http://feeds.feedburner.com/TodsBlog” />[/raw]
[raw]<?php bloginfo(’pingback_url’); ?>[/raw] - пусть к XML-RPC файлу, который отвечает за оповещение авторов других блогов, что вы на них ссылались. Находится в header.php.
[raw]Было: <link rel=”pingback” href=”<?php bloginfo(’pingback_url’); ?>” />
Стало: <link rel=”pingback” href=”http://tods-blog.com.ua/xmlrpc.php” />[/raw]
[raw]<?php bloginfo(’stylesheet_directory’); ?>[/raw] - говорят, встречается в теме постоянно, хотя у себя не видел. Видимо, отвечает за путь к файлу стилей.
[raw]<?php bloginfo(’description’); ?>[/raw] - задает описание сайта (в настройках админки поле Tagline), встречается в теме постоянно. Можно просто заменить на нужный вам текст.
[raw]<?php bloginfo(’comments_rss2_url’); ?>[/raw] - адрес фида (RSS потока) для комментариев, чаще всего встречается в sidebar.php и footer.php.
[raw]<!– <?php echo get_num_queries(); ?> queries. <?php timer_stop(1); ?> seconds. –>[/raw] - находится в footer.php, выводит количество запросов и время их выполнения. В принципе, особой необходимости в этом нет, поэтому можно смело удалять.
Код между строчками [raw]<?php /* Widgetized sidebar, if you have the plugin installed. */
if ( !function_exists(’dynamic_sidebar’) || !dynamic_sidebar() ) : ?> и <?php endif; ?>[/raw] в файле sidebar.php используется, когда в вашем блоге отключены виджеты. Если вам это не грозит - закомментируйте его или удалите.
Не исключено, что в темах (шаблонах) вы можете встретить многие другие php вставки с вызовом функций. Некоторые из них, думаю, можно будет спокойно заменить. Но для этого нужно понимать, что и как делает та или иная строка кода, иначе последствия могут быть не очень хорошие. Для подтверждения догадок можете смотреть результат выполнения функций прямо на страницах своего сайта, делая определенные выводы.
P.S. Меня не будет в Интернете ближайшие 4 дня, поэтому на все письма, комментарии в блоге и сообщение по icq отвечу в пятницу (11.07). Один пост будет автоматически опубликован в среду вечером, я расскажу о результатах эксперимента с привлечением трафика из новостных социальных сайтов.
Не пропустите! До скорых встреч.
Спасибо спонсорам:








Чтож, постараюсь применить это на своем блоге, будет это блище к выходным. При хорошем стечении обстоятельств опубликую свои результаты.
Это все экономии на спичках. Экономят на запросах в базу, а удаление этих записей не уменьшает их количество..
стоит ли полученая производительность (незначительная) затраченого времени? да и функции эти все там не спроста, в процесе ведения блога многое может изменится, например установите плагин для мультиязычности, будете вести блог на нескольих языках, через несколько лет поменяете название css .. мало ли что, а про то, что было изменено можно забыть, и потом с апдейтом получить много проблем..
в общем я против этого, хотя все что написано полезно для понимания работы вордпреса и для повышения интереса к ковырянию в нем
Привет! Насколько я понимаю bloginfo и т.п. основаны на запросах, которые wordpress делает по умолчанию… там ему просто необходимы эти данные и используешь ты bloginfo или нет безразницы. Думаю более актуальная тема все таки с кэшированием данных. WordPress слишком глубоко засел в свои дебри так что имеет то, что имее :)
Буквально сегодня читал почти один в один статью, только она покороче будет (блог не помню).
Tod, я рад, что вдохновил Вас на написание статьи, но справедливости ради отмечу, что в своей статье я говорил о том, что удаление этих всех “спичек” является абсолютно бессмысленным - запросы на них не экономятся (разве что в ветке 2.3 с отключенным кэшем).
Хардкодинг - занятие неблагодарное и чреватое проблемами в будущем.
В принципе, если не охота, то делать это не обязательно:) Я согласен, но выигрыш в производительности минимален, но с другой стороны лично мне “лишние” функции загромождали код шаблона, поэтому я от них избавился.
Вот спасибки, занес пост в любимые закладки ибо запомнить такое не получится, пусть все говорят что выигрыш минимален, а как говорится: “курочка по зернышку клюет”, вообщем не помешает.
После прочтения твоей статьи заменил часть кода на вордпрессе, правда не всё (боюсь в базу лезть). Но реальной скорости увеличения открытия страниц не увидел.
Flash`er, если ты посмотришь комментарии выше, то заметишь, что все склоняются к такому же выводу:) Я тоже, в принципе. Возможно, уместно было бы заметить название поста с “оптимизация блога” на “зачистка шаблона от ненужных тэгов”. Занятие на любителя, конечно. Я удалил и заменил все лишнее (для меня лично).