Снижение потребляемой в WordPress памяти при создании страниц — плагин WPLANG Lite для подмены файла локализации

21 Февраль, 2010

Здравствуйте, уважаемые читатели блога KtoNaNovenkogo.ru. В этой статье мы продолжим рассматривать методы, направленные на снижение нагрузки, создаваемой этим движком на сервер хостинга. Ранее мы уже рассмотрели варианты оптимизации темы (шаблона) WordPress для уменьшения количества запросов к базе данных, а так же поговорили о необходимости использования кэширования WordPress и подробно разобрали установку и настройку плагина Hyper Cache.

Сегодня мы займемся рассмотрением способов мониторинга нагрузки на сервер и снижением потребления памяти при создании страниц в Вордпрессе.

Мониторинг нагрузки, создаваемой WordPress на сервер


В первой статье, посвященной оптимизации темы оформления (см. ссылку выше), мы узнали, как определить количество запросов к базе данных WP при загрузке вебстраницы вашего блога. Сегодня мы будем пытаться снизить потребление памяти во время этого процесса и, следовательно, нам нужно будет каким-то образом все это дело мониторить.

Итак, нам нужно знать, сколько памяти расходуется при загрузке той или иной страницы. Эту проблему можно решить как с помощью установки соответствующего плагина, так и с помощью дописывания нескольких строк кода в файл /wp-content/themes/Папка-с-вашей-темой-оформления/functions.php из используемого вами шаблона WordPress (тут про устройство тем читайте). Давайте начнем с плагина.

Он называется «Панель нагрузки» и скачать его можно отсюда. Этот плагин очень простой, что несомненно является достоинством. Для установки вам нужно выполнить стандартные манипуляции:

  1. распакуйте архив panel_load.zip, используя ftp-менеджер подключитесь к вашему сайту и загрузите файл panel_load.php в папку с плагинами wp-content/plugins/
  2. войдите в админку WordPress и выберете вкладку «Плагины»- «Inactive (Неактивно)»
  3. найдите строку «Панель нагрузки» и активируйте его

Если при установке этого возникли какие-либо затруднения, то можете обратиться к материалам этой статьи — Решение возможных проблем при установке плагинов.

В админке Вордпресса выбираем из левого меню Настройки -> Панель нагрузки.

Давайте рассмотрим, что же можно здесь настроить.

  1. Позиция — вы можете выбрать способ отображения панели нагрузки на страницах вашего WP блога:
    1. Фиксированная — «Панель нагрузки» все время будет находиться в заданной области экрана вне зависимости от прокрутки
    2. Абсолютная — позиционирование панели будет привязано уже не к экрану, а к самой странице. При прокрутке она будет уходить за видимую часть экрана
  2. Горизонтальное положение панельки — вы можете выбрать, к какой стороне она будет прижата
  3. Вертикальное положение — тоже самое, но для вертикального положения
  4. Отображать панель для — здесь можете выбрать, кому она будет видна — всем посетителям вашего блога или же только вам (Администратору)
  5. Отступ по горизонтали (в px) — вы можете задать отступ панели нагрузки от левого или правого края окна, в зависимости от того, что вы выбрали в поле «Горизонтальное положение»
  6. Отступ по вертикали (в px) — тоже самое, но отступ уже задается от низа или верха экрана
  7. Отображать панель в админке — включить отображение этой панели в админке WordPress, выбрав из выпадающего списка вариант «Да»

На страницах блога «Панель нагрузки» выглядеть будет примерно так:

Как вы можете видеть, на ней отображается следующая информация:

  1. количестве запросов к базе данных, сделанных при загрузке данной вебстраницы
  2. времени создания страницы
  3. потребление памяти

Информация о нагрузке Вордпресса без использования плагина


Ту же саму информацию о нагрузке можно вывести и без использования плагинов. Для этого вам нужно открыть на редактирование файл /wp-content/themes/Папка-с-вашей-темой-оформления/functions.php из используемой вами темы. Добавьте в него следующий код:

function usage() {
printf(('%d / %s'), get_num_queries(), timer_stop(0, 3));
if ( function_exists('memory_get_usage') ) echo ' / '
 . round(memory_get_usage()/1024/1024, 2) . 'mb ';
}
add_action('admin_footer_text', 'usage');
add_action('wp_footer', 'usage');

Сохраните произведенные изменения. Теперь в самом низу админки WordPress и в футере блога будет выводиться информация о нагрузке.

Строка

add_action('admin_footer_text', 'usage'

в приведенном выше коде отвечает за вывод инфы в админке. Следовательно, если вы удалите ее из кода, то в админке это дело отображаться не будет. Строка

add_action('wp_footer', 'usage');

отвечает за вывод в футере лицевой части блога. Лучше эту строку убрать из кода, добавляемого в файл functions.php, а вместо этого открыть на редактирование файл /wp-content/themes/Папка-с-вашей-темой-оформления/footer.php и вставить в нужное место этого файла код:

 <?php if (current_user_can('level_10')){ ?>
<small><?php usage();?></small><?php } ?>

В этом случае информация в футере будет видна только администратору блога, т.е. вам, а посетители ее не увидят. Ну, вот мониторить потребление памяти при создании вебстраниц мы научились. Теперь пора переходить к снижению этого самого потребления.

Wplang Lite — замена файла русской локализации Вордпресса


Ту оптимизацию потребления памяти, которую мы будем сейчас рассматривать, я проделывал сам уже довольно давно и в то время о плагине, реализующем эту функцию, мне было неизвестно. Поэтом пришлось осуществлять все операции вручную, хотя это было совсем и не сложно. Но сейчас появился WPLANG Lite, который реализует все это в удобной и простой форме.

Что же мы, собственно, будем делать? Оказывается, что в оригинальном файле русской локализации ru_RU Вордпресса содержится перевод всего движка, включая админку и некоторые плагины. Но при создании вебстраниц локализация админки совсем не нужна, а т.к. используется единый файл перевода, то получается, что в памяти висит несколько мегабайт совершенно не нужной информации.

Суть метода по снижению потребления памяти заключается в том, чтобы при загрузке страниц использовался облегченный файл локализации ru_RU_lite, в котором нет перевода админки и неиспользуемых плагинов. Это позволит сэкономить порядка трех мегабайт памяти сервера.

Что примечательно, при генерации фронтальной части блога будет использоваться облегченный вариант файла локализации WordPress, а при генерации админки — полный файл локализации. Т.е. ни вы, ни посетители вашего ресурса разницы от подмены не заметите.

Скачать WPLANG Lite вы можете отсюда. Для его установки нужно проделать следующие нехитрые операции:

  1. распакуйте архив wplang-lite.0.3.zip, используя ftp-менеджер загрузите папку wplang-lite в папку с WP плагинами wp-content/plugins/
  2. установите права доступа 777 для папки /wp-content/languages/ (сделать это можно, например, в FileZilla (здесь обзор FTP клиента находится). Не пропустите этот шаг, т.к. данный плагин сразу же после своей активации захочет создать в этой папке урезанный файл локализации Вордпресса ru_RU_lite, но если права доступа на эту папку не позволят ему это сделать, то облегченный файл создан не будет. И что еще печальнее, вам об этом даже не сообщат. Просто вы в этом случае не увидите нужного результата.
  3. войдите в админку и выберете вкладку «Плагины»- «Inactive»
  4. найдите расширение и активируйте его

Собственно, все уже работает. Что примечательно, при обновлении файла полной локализации плагин WPLANG Lite автоматически скачает новый его облегченный вариант. Именно в этом и состоит преимущество использования плагина W по сравнению с ручной настройкой. Хотя, если вам интересно, то я могу рассказать, как все это проделать без него.

Снижаем потребление памяти в WP без использования плагинов

Нужно скачать файл ru_RU_lite.mo, разархивировать его и затем, используя ftp-менеджер, загрузить 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');

Если в wp-config.php присутствуют обе этих строки, то просто закомментируйте (допишите вначале строки // ) первую и раскомментируйте вторую (уберите вначале строки //).

Удачи вам! До скорых встреч на страницах блога KtoNaNovenkogo.ru

Еще:

Рубрики :Основы WordPress ¦ Плагины для WordPress

Комментарии и отзывы

ipod

Я вообще ушел с WP. С посещаемостью от 10к редко кто выдерживает его

Димок

Спасибо, не знал про плагин Панель загрузки. Что касается языка, то вместо WPLANG Lite я просто ставлю английскую версию WP, что в корне решает эту проблему. Там нет ничего сложного, даже кто плохо знает язык.

И касательно Hyper Cache — есть более достойная альтернатива, а именно, W3 Total Cache для WordPress, которая кроме статических страниц кэширует запросы БД WP и имеет массу других возможностей

Дмитрий

ipod: если не секрет, то на что именно вы ушли с WP.

Димок: спасибо, еще не познакомился с W3 Total Cache, попробую.

Марина

В плагине для Вордпресс «Панель нагрузки» выставила те же параметры, как показано у вас.Но панель видна только в админке, на страницах ее нет. А админке WP на какую страницу она показывает? На саму админку WordPress?

Установила плагин WPLANG Lite. Посмотрела потребление памяти до и после его установки. Существенных изменений не увидела.

А как и чем определить норму потребления памяти. Например, у меня 54 запроса/0,547/26,61Мв

Дмитрий

Марина: да, в админке WP плагин «Панель нагрузки» показывает нагрузку на сервер при генерации страницы админпанели Вордпресс. Странно, что на страницах WP блога вы его не видите. Может у вас абсолютная привязка стоит и панель отображается за пределами видимости страницы (в самом верху или низу)?

У меня этот метод (c заменой полного файла локализации вордпресс на покоцанный) снизил примерно на три мегабайта потребление памяти. Про абсолютные величины потребления памяти не берусь рассуждать, у меня, как вы видите, около 17 мегабайт, но мне кажется, что это не совсем соответствует истине или зависит от сервера. Тут более важно относительное снижение потребления памяти после использования данного метода. Попробуйте сделать все вручную, как я описал в конце статьи, должно сработать.

Марина

Пробую без WP плагина панель нагрузки. В каком месте functions.php надо писать код? Пишу последними строчками — вордпресс выдает ошибку.

Дмитрий

Марина: непосредственно перед

?>
попробуйте.

Марина

Спасибо, Дмитрий. Случайно и вовремя обнаружила, что доэкспериментировалась до того, что сломалась RSS-подписка в вордпресс, пришлось все вернуть назад, кроме кэширования. С WP плагинами, как-то спокойнее, есть уверенность, что ничего не испортишь.

Googlebot

Можно использовать бесплатный WP плагин кэширования http://centavrus-opti.ru/skript-keshirovaniya-dlya-wordpress.html

Намного превосходит аналоги. Страничка пишется в кэш и при последующих обращениях уже отдаётся. Бесплатная. Шикарная вещь — далеко позади оставил все иные варианты. Раньше пользовался коммерческой версией MAXCACHE — тоже неплохая, но по сравнению с вышеприведённым скриптом — УГ. Деньги зря на ветер... А вообще — нормальный хостинг должен без напряжения держать WordPress

Ю.Б.

Googlebot говорит, что:

А вообще — нормальный хостер должен без напряга держать WordPress

Вот именно! Никакой такой супер-пупер-мега нагрузки WP не создает. Просто многие хостинги живут еще в прошлом веке.

Дмитрий

Ю.Б.: вчера в час пик посещаемости сбросил кэш в WordPress (внес изменения в шаблон Вордпресс и хотел, чтобы изменения вступили в силу) и через пять минут пришло предупреждение от владельца хостинга о превышении потребления ресурсов. Причем превышение было очень существенное, особенно по памяти (более чем двукратное). Теперь кэш в WP не сбрасываю во время большого наплыва посетителей.

Avis

А для снижения нагрузки на процессор нет решений в wordpress ?

danila

ipod: у меня сейчас 7-8 тысяч уникальных посетителей. в WordPress кэширование поставил, вроде все ок :). виртуальный хостинг держит...

Vadim

Добрый день, вопрос может немного не в тему, но меня интересует, сказывается ли количество установленных в вордпресс плагинов на работоспособность wp? (Естественно исходя их того, что они друг с другом не конфликтуют и сами по себе не тормозят движок WordPress). Спасибо

Vadim

попутно ещё один вопрос. Сам по себе «плагин» для WP по сути это просто какой-то дописаный код в страницу или нечто большее?

Дмитрий

Vadim: сказывается количество плагинов на производительность WordPress. Плагины, как правило, выполняются в реальном времени и создают определенную нагрузку на сервер. Разные WP плагины по разному оказывают влияние, но если есть возможность обойтись без плагина (внесением изменений в код), то лучше плагин в вордпресс не использовать.

Юрий

после использования ru_RU_lite.mo в меню сайта в место «Главная» появилось «Home» ...подскажите как подправить

Павел

Плагин Pure PHP Localization аналог этого?

Что лучше?

юрий

Как хостер настоятельно не рекомендую устанавливать какие либо плагины связанные с уменьшением запросов к бд и кешированию,все и так работает нормально.

Значительно сократить (на 50% )нагрузку и время загрузки можно через штаксес,вписать туда.

#кэшировать html и htm файлы на один день

Header set Cache-Control «max-age=43200»

#кэшировать css, javascript и текстовые файлы на одну неделю

Header set Cache-Control «max-age=604800»

#кэшировать флэш и изображения на месяц

Header set Cache-Control «max-age=2592000»

А бесплатный хостинг без рекламы,с поддержкой .штаксес

можно найти тут http://host-telekom.ru/market/wordpress.php

neideal

Дмитрий, подскажите пож-та. После того как поставил плагин WPLANG нужно ли оставлять права на папку 777 или их лучше вернуть на 755?

Эдуард

Warning: Cannot modify header information — headers already sent by (output started at /home/differ/public_html/wp-config.php:1) in /home/differ/public_html/wp-includes/pluggable.php on line 934

после использования метода уменьшения потребления памяти в ручную с помощью файла ru_RU_lite.mo, тема сайта стала отображаться на английском и админка стала не доступна(выбило какую-то ошибку), я решил вернуть все как было, в файле wp-config.php изменил код на стандартный и удалил сам файл ru_RU_lite.mo из папки /wp-content/languages/, после чего я не могу войти в админку и выбивает уже другую ошибку, вот ее текст:

Warning: Cannot modify header information — headers already sent by (output started at /home/differ/public_html/wp-config.php:1) in /home/differ/public_html/wp-includes/pluggable.php on line 934

помогите с возникшей проблемой

Александрия

Спасибо за статью! После ручного уменьшения потребления памяти -4,2мб к показателям без.

Alexpts my-wordpress.ru

Спасибо за упоминание плагина «Панель нагрузки»

Саша

Юрий писал об использовании .хтаксесс для кеширования. Кто-нибудь, подскажите, плиз, существует ли вариант исключить из кеширования главную стр. (в том случае, если кешировать так, как сказал Юрий). Хочу попробоывать это сделать не на Вёрдпрессовском сайте. Т.е. плагин не поможет.

Ну или ссылочку оставьте, где это можно было б почитать. Очень хочется! ))

Дмитрий

Добрый день, Дмитрий.

У меня была до этого проблема с резким падением посещаемости от 500 до

20 человек в сутки. Причина, как оказалась, в плагине W3 Total Cache,

точнее проблема возникла сразу после его обновления. Изменения в

плагине, как пишут создатели, следующие:

Версия плагина 0.9.2.8

Fixed /tmp file creation issue when saving settings

Fixed an issue with auto minify

Fixed an issue with New Relic API key verification

Fixed uncommon issue with require ObjectCache failing

Fixed uncommon open_basedir verification issue

Improved notification handling by modified WordPress FileSystem API

implementation

Added PHP file handling to support cases not covered by default

WordPress FileSystem API

Сайт при этом нормально открывается, проверяю скорость сайта через

https://developers.google.com/speed/pagespeed/insights выросла с 86 до

99%. Но посещаемости нет почти. Отключаю плагин, посещаемость

восстанавливается. В чем может быть проблема, в плагине, в хостинге,

или еще в чем?

FreeInstall

Ссылка на файл «скачать файл ru_RU_lite.mo» не работает 🙁 не могу скачать.

Ирина

Спасибо за полезную статью. Но у меня причиной долгой загрузки сайта оказалось в первую очередь не отсутствие оптимизации запросов к БД или чего-нибудь подобного, а странные левые запросы при загрузке любой страницы сайта.

В консоли FireFox хорошо видно, что в процессе загрузки страниц сайта среди нормальных нужных POST и GET запросов попадаются запросы на https://jim6.mail.ru/connect (цифры после jim при каждой загрузке могут быть разными) и на http://q7.queuev4.vk.com/im901. Скрытые ссылки, скажете Вы?

Несколько разных плагинов перепробовала. Утверждают, что их нет. На вирусы тоже разными сервисами проверяла — чистенько. Глазами все просматривала — и БД и файлы WordPress. Ну, ничегошеньки! Что делать, ума не приложу:- ( Да еще так странно.

Эта картина с левыми запросами проявляется не каждый раз при загрузке, а время от времени. Но в течение дня довольно часто. И не только у меня (комп, браузеры мои не виноваты). Жалуются посетители сайта с разных мест, что сайт или вдруг начинает грузится супер долго, или вообще не открывается.

Дмитрий

Ирина: ну, первый адрес jim6.mail.ru — это вроде как плагин для браузера от майл.ру (веб-агент). Возможно, что он установлен у Вас в Фаерфоксе. Он, как раз, по таким Урлам и стучится.

Второй не знаю, что это. У меня была длинная история с вирусами на сайтах — там такое странное творилось... Возможно, что у вас тоже зверь какой завелся на сайте.

Мне пришлось буквально перетряхивать все файлы движка на предмет чего-то необычного и только после обнаружения основного «рассадника» (в какой-то далекой папке нашел буквально мини цмс, которая создала свой сайт поверх моего и уже трафик на него пошел немалый).

В общем, дело сложное теперь концы искать... У меня тогда и сайт тормозил, и даже все место выделенное на хостинге закончилось. Пока не нашел рассадник ничего особо не помогало.

Андрей

даный сайт на каком хостинге стойт?

Подписаться не комментируя