Теперь мы оптимизированы и ускорены.

2.11.2009 23:15

Сегодня решил таки озаботиться скоростью работы своего блога – уж больно долго он открывался и реагировал на запросы.

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

firebug_not_optimized

host-tracker_not_cache

Начал «гуглить» по поводу оптимизации работы 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х ошибок упало практически до нуля:

firebug_optimized

host-tracker_cache_no_revision

И кто сказал, что оптимизация это плохо? :)


Метки: , , , , , ,


Оставить камент