Сегодня решил таки озаботиться скоростью работы своего блога – уж больно долго он открывался и реагировал на запросы.
Для теста взял банальный FireBug и сайт ХостТрекер, как сайт генерирующий одновременно несколько обращений к сайту.
Результат порадовал не особо: 23 ошибки 503, и почти 3 секунды генерации главной страницы. ![]()

Начал «гуглить» по поводу оптимизации работы WordPress и снижения нагрузки на сервер, благо информации в Сети предостаточно.
В результате был сформирован фронт первоочередных работ:
- оптимизация скриптов (в частности темы)
- отключение ревизирования записей и страниц
- подбор и настройка оптимального плагина для кэширования страниц
По первому пункту особо далеко я не ушел. Заменил явно ненужные вызовы функций в файле header.php в папке темы:
- замена кодировки
<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" />
- название блога в теге «title» на непосредственно название самого блога
<?php bloginfo('name'); ?>
- указал прямую ссылку на файл стилей, все равно я тему менять не буду:
<?php bloginfo('stylesheet_url'); ?>
- заменил вызовы функций для получения description и названия блога в шапке:
<div id="header" role="banner"> <div id="headerimg"> <h1><a href="<?php echo get_option('home'); ?>/"><?php bloginfo('name'); ?></a></h1> <div class="description"><?php bloginfo('description'); ?></div> </div> </div>
на вменяемое
<div id="header"> <div id="headerimg"> <h1><a href="http://ar3b.com/">Блог ar3b</a></h1> <div class="description">Мысли вслух.</div> </div> </div>
- явно указал язык блога:
вместо
<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
сделал
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="ru-RU">
- удалил явно бессмысленные, в своей массе комментированные, но почему-то оставленные в теме строки:
<style type="text/css" media="screen"> <?php // Checks to see whether it needs a sidebar or not if ( !empty($withcomments) && !is_single() ) { ?> <?php /*?> #page { background: url("<?php bloginfo('stylesheet_directory'); ?>/images/kubrickbg-<?php bloginfo('text_direction'); ?>.jpg") repeat-y top; border: none; }<?php */?> <?php } else { // No sidebar ?> <?php /*?> #page { background: url("<?php bloginfo('stylesheet_directory'); ?>/images/kubrickbgwide.jpg") repeat-y top; border: none; }<?php */?> <?php } ?> </style>
Всё остальное решил оставить на потом, так по сути это выдаивание крох, которое только в своей массовости даст какой-то заметный результат. Но как мне кажется, работы там по всем файлам темы – не паханное поле.
Второй пункт проблем не вызвал, опять же из-за большого количества информации в Сети.
В файле wp-config.php вставляем строчку
define('WP_POST_REVISIONS', false);
и WordPress наконец-то забывает о том, что ему надо плодить в базе данных немерено ненужных мне записей. А потом чистим базу данных от уже существующих ревизий:
DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision'
С третьим пунктом оказалось посложнее. Пока нашел более менее вразумительный плагин для кэша (можно было бы конечно написать свой, но изобретение велосипеда совсем не мой профиль, да и лень – страшная движущая сила). В результате я перепробовал 3-4 плагина для кэширования блога, я остановился на WP Super Cache.
Его плюсы я определил как:
- нормальная совместимость с моей версией WordPress
- адекватен в работе
- прост в установке и настройке
- хороший прирост производительности
Скачать плагин, кому интересно, можно по ссылке .
В результате проведенных работ, время ответа сервера сократилось в среднем в 6(!) раз, а количество 503х ошибок упало практически до нуля:

И кто сказал, что оптимизация это плохо?
Метки: wordpress, WP Super Cache, кэш в wordpress, оптимизация wordpress, плагин для кеширования wordpress, плагин для кэширования в wordpress, ускорение wordpress