Работа с памятью
Пожалуй, только новичку не известно, что WordPress потребляет много ресурсов. Об оптимизации движка WordPress я уже не раз писал. К примеру, свежеинсталлированный WordPress жрет 25-30 мб памяти. Количество запросов к БД составляет 16 с главной страницы и около 25 со страниц и разделов. А если ко всему этому еще добавить плагины, WP и вовсе превращается в громоздкую машину.
Но при помощи умелых рук и этой инструкции вы сможете снизить потребление памяти в 10 раз, нагрузку на БД в запросах более чем в 8-9 раз, а генерация станет стабильной в районе 0.1-0.5 секунд. Сейчас мои блоги потребляют не более 3-4 мб памяти, количество запросов к БД с главной 3, с других страниц 6-9. Хотите себе такие показатели — дочитайте статью до конца.
Для начала нам нужно замерить показатели. Об использовании специального кода я уже писал в данной статье.
Вписываем код в footer.php нашей темы:
<?php echo get_num_queries(); ?> запросов. <?php timer_stop(1); ?> секунд. <?php echo memory_get_usage()/1024/1024, 2; ?> Мб
Что ж цифры я думаю вас не впечатлили. Пару десятков запросов к базе данных, около 30 мб памяти.
1.Самый доступный способ — это замена файлов локализации WordPress на облегченные версии Lite. Скачиваем архив Файлы локализации WordPress. Внутри 2 файла: ru_RU_lite.mo и ru_RU_lite.po. Копируем их в папку wp-content/languages нашего блога. Открываем wp-config.php:
Вместо
define('WPLANG', 'ru_RU');
пишем это:
if (strpos($_SERVER['REQUEST_URI'], 'wp-admin')) define ('WPLANG', 'ru_RU'); else define ('WPLANG', 'ru_RU_lite');
Сохраняем и заливаем на сервер.
Таким образом, данная манипуляция позволяет сократить потребление памяти почти на 8-9 мб.
- Данный способ требует наличия у вас на хостинге или сервере Eaccelerator — «ускоритель работы PHP-кода».При наличии Eaccelerator на хостинге потребление памяти снижается почти в 2 раза. Заплатив за различные услуги хостинга, возможно подключить Eaccelerator на виртуальный хостинг.
Таким образом, данные два способа снизили потребление памяти WordPress`ом с 30 мб до 4х. -
Отключение обновлений позволяет снизить потребление памяти в среднем на 200-300 кб.
Открываем файл update.php в папке wp-includes, листаем до конца. В конце видим 13 строк (в версии 3.3.2), начинающихся на add_action. Перед каждой строкой ставим решетку и сохраняем, как показано на рисунке ниже.
Таким образом, мы запретили блогу проверять обновления, тем самым сократив потребление памяти и нагрузку на сервер.
Работа с кешированием
Когда работа с оптимизацией памяти закончена, пора приступать к кешированию. Причем, работа в этой сфере разделяется на 2 этапа: уменьшение количества запросов и кеширование страниц блога.
В работе с WordPress я использую 2 плагина. Первый — WP Super Cache позволяет создать кеш страниц блога на сервере и отдавать их как html странички. Скорость загрузки кешированных страниц поднимается в 3-4 раза. Там же и даны советы по настройке плагина, а также тестовые замеры. Текущая версия плагина 1.1.
Второй плагин для себя я открыл совсем недавно. Раньше я пользовался более древней его версией, затем пересел на Memcached Manager. Сейчас же основу кеширования составляет плагин SJ Object Cache версии 1.2 с поддержкой Memcache и Memcached. Он позволяет кешировать с помошью нескольких на выбор вариантов. Для меня оптимальным является кеширование с помощью Memcached. Устанавливаете плагин, активируете, сохраняете настройки.
Затем переходите во вкладку Memcache и вписываете адрес сервера 127.0.0.1. Главное, чтобы настройки сохранились, нужно установить права 777 или 755 на папку с плагином.
Но для такого рода кеширования хостинг должен иметь Memcached-сервер. На VPS|VDS установить memcached можно по этой схеме. Если же у вас нет Memcache на хостинге, попробуйте третий вариант кеширования. Он также дает неплохие результаты.
Что же дает это кеширование? По сути, количество запросов не уменьшается, а кешируется. То есть при каждом обращении пользователя к странице к БД идут 20-30 запросов. Они обрабатываются и отдаются пользователю. При кешировании часть запросов в кешированном состоянии хранится в оперативной памяти и отдается оттуда уже в обработанном виде. Таким образом, снижается нагрузка на сервер.
В итоге подобная оптимизация сайта на WordPress привела к тому, что генерация снизилась в 2 раза, количество запросов на главной в 10 раз, а скорость загрузки страниц возросла более чем в 3-4 раза.