3 января 2010

Оптимизация памяти и запросов в wordpress

Чулан
О памяти в wordpress

То, что wordpress кушает немало памяти, думаю, всем известно. Я периодически выкладываю на своем блоге некоторые посты, которые могут быть полезны при оптимизации wordpress.

Чтобы уменьшить потребляемую wordpress память я по стопам Макса делал прямой перевод wordpress 2.6.5 и wordpress 2.9, которыми, в принципе, доволен. Жесткий перевод движка позволял сократить 3-4 Мб оперативной памяти и позволял генерировать страницу немного быстрее, но терялся потенциал мультиязычности. Простым пользователям, далеким от всех этих «интернет штучек», достаточно сложно установить/обновить wordpress самостоятельно, хотя лично я считаю, что это того стоит!

Сергеем Бирюковым был написан плагин, который позволяет не так хорошо, как в прямом переводе, но в значительной мере решить проблему затрат памяти на локализацию. Он написал очень полезный плагин Pure PHP Localization, который позволяет уменьшить потребление памяти на 2-3 мб в wordpress. Кроме того плагин также сокращает память, потребляемую файлами локализациями плагинов и темы, т.е. чем небольше у вас на блоге плагинов, с русской локализацией, тем ощутимее будет прирост.

Я решил не распространять и полностью отказаться от распространения прямого перевода wordpress 2.9. Т.к. реализованный Сергеем способ является «из коробки». Т.е. не требует от пользователя никаких телодвижений. Просто поставил и активировал в админке. Разница в памяти между этими способами небольшая и она того не стоит.

ru_RU_lite

Этот способ скорее всего всем известен и уже давно широко применяется — использование облегченных файлов локализации ru_RU_lite.
В родном файле локализации ru_RU содержится перевод всего движка и плагина akismet (я им не пользуюсь, поэтому файл локализации можно сократить файл на несколько десятков строк). На самом сайте многие строки файла локализации, которые используются в админке не нужны, но они занимают память не принося пользы. Чтобы такого не происходило используется файл перевода ru_RU_lite, который содержит только необходимые строки перевода и весит в разы меньше. Это позволяет сократить порядка 1 Мб памяти, все зависит от настроек хостинга и тд. Также можно сделать с файлами локализации плагинов (в шаблоне стоит просто переименовать файл локализации).

В сборки Ивана Калинина (Lecactus) файл ru_RU_lite уже есть в дистрибутиве и в файле wp-config.php есть все нужные строки, которые позволяют использовать облегченный перевод. Нужно просто эти строки(у) раскомментировать.

Если у вас нет файлов ru_RU_lite.po и ru_RU_lite.mo в директории \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');


Показатели на моем локалхосте до применения вышеописанных методов
Потребление памяти: 14.777MB

После:
Потребление памяти: 11.599MB


Php eaccelerator

Установка на хостинге php eaccelerator позволяет уменьшить потребляемую wordpress память в несколько раз. У меня на VDS Php eaccelerator уменьшил показатель потребляемой памяти в 9 раз!!! Блог потребляет всего 1,5 Мб памяти.
Сказать точно и грамотно я не могу за счет чего идет такой прирост, думаю, если интересно, то можно узнать на проекте Php eaccelerator о принципах работы. Кто разбирается в php, думаю, подскажут правильно, точно и понятно, что там происходит.

Запросы в wordpress


Есть два пути уменьшения запросов к БД:
1) Полностраничное кэширование.
2) Кэширование запросов

Про полностраничное кэширование уже много писали, поэтому не буду заострять на этом много внимания. Хочу лишь дать ссылку на относительно свежий обзор плагинов полностраничного кэширования для wordpress.

Для получения информации о кэшировании запросов в wordpress идем тоже к Владимиру Колесникову. Я писал об этом этом замечательном плагине, который позволяет очень сильно уменьшить количество запросов к базе данных. На чистом wordpress 2,9 с дефолтным шаблонов количество запросов к БД снижается с 19 до 3!!! Спасибо Владимиру! Чем ни больше плагинов у вас установлено и чем ни больше запросов к БД делает ваш шаблон, тем более ощутимая экономия получается.

Запросы в премиум шаблонах

Основным источников дополнительных запросов являются в большей степени плагины, но шаблоны тоже делают «лишнии» запросы к БД.
В премиум темах для wordpress бывает такое, что на странице настроек темы в админке можно сделать различные настройки, что, в принципе, удобно для простых пользователей. Но часто каждая опция реализована в виде отдельного запроса get_option('name_option'), где 1 поле соответствует 1 значение, что порой является причиной лишних обращений к БД и делает БД немного «солиднее». Можно объединить все значения в массив и сохранить результат в 1 поле. Т.к. образом для того чтобы вынуть все нужные настройки темы производиться только 1 запрос к БД, то что запрос немного «тяжелее», думаю можно пренебречь. Из 2х зол выбираем меньшую.

Прочее


Процесс оптимизации не имеет границ )
В данном посте я хотел затронуть самые эффективные способы оптимизации именно wordpress, которые я знаю и используюсь. Также есть много способов, заставить сайт работать «шустрее», начиная от объединения картинок в спрайты, до настроек веб сервера.

В заключение… блог alexpts.ru потребляет 1,3 Мб памяти и делает 12 запросов к БД с главной страницы.
Теги:wordpressкэшоптимизация
Хабы: Чулан
+3
1,8k 23
Комментарии 19
Похожие публикации
Middle WordPress Developer
от 80 000 до 100 000 ₽rgbcodeМожно удаленно
Full-stack Web Developer (REMOTE)
от 2 000 $AXE-WEBМожно удаленно
Full-Stack Web Developer
от 50 000 до 200 000 ₽RapidWeb.meМожно удаленно
PHP Developer (удаленно)
от 100 000 ₽HelastelМожно удаленно
Лучшие публикации за сутки