Быстродействие WordPress

Спонсор поста: Кайзер - это титул германских императоров?
Нет, это такая бытовая техника.

Многие думают что оптимизировать WordPress не нужно. Вроде и так быстро работает. Но поверьте мне, когда на ваш блог, в сутки, посещяемость выростает до нескольких тысяч, и при этом стоит много разным плагинов, то он может просто «упасть», или сервер загнется. Ну если у вас мощный сервер, дальше не читайте ;) Но даже если у вас один маленький блог, и слабо посещается, все равно будет приятно, если он заработает быстрее.

Давайте разберем эту проблему.

Теория

Для начала предлагаю разобраться, что же такое происходит «там», что можно оптимизировать.

Мы знаем что вордпресс написан на php. При открытии посетителем страници происходит следующее:

  • WordPress делает запросы в базу данных, т.е. вытаскивает из нее такую информацию как текст записи, автор, дата и время создания записи, комментарии, и т.д.
  • потом эти данные с компилируются с помощью php и соответственно выводится посетителю.

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

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

Такой процесс сохранения на диск динамической информации называется кеширование.  А сама информация на диске называется кеш.

Прошу к терминам не придираться, так как старался описать все наиболее популярно.

Обоснование

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

Я проверил скорость загрузки сайта до оптимизации быстродействия и после. Для точности, каждый тест провел 5 раз и сделал скриншоты. Смотрите скрины и сами думайте, даром ли я потратил неделю, чтобы разобраться с этой штукой.

До:

После:

Результат как говорится «на лицо».

Практика

Итак, теорию мы знаем, теперь как же все таки это использовать в WordPress?

Для тех кто использует оптимизированную сборку от Макса, нужно просто, в файле wp-config.php закомментировать строчку:

define('DISABLE_CACHE', '');

т.е. просто перед ней поставить два слеша (//).

Кому интересно, можете почитать тут как Макс реализовал кеш в WordPress'e.

Для остальных, есть специальный плагин WP-Super-Cache.

  1. Сначала удостоверьтесь что у вас не установлен плагин WP-Cache. Если же установлен, дальше можете не читать.
  2. Качаем плагин тут.
  3. Разархивируем.
  4. Копируем папку wp-super-cache в директорию плагинов /wp-content/plugins.
  5. Активируем плагин в панели управления плагинами.
  6. Перейдите в Настройки, и там откройте WP-Super-Cache. Скорее всего там будет что-то такое: advanced-cache.php does not exist
    Create it by executing:
    ln -s /home/wordat/public_html/sait/wp-content/plugins/wp-super-cache/wp-cache-phase1.php /home/wordat/public_html/sait/wp-content/advanced-cache.php
    in your server
    Or by copying /home/wordat/public_html/sait/wp-content/plugins/wp-super-cache/wp-cache-phase1.php to /home/wordat/public_html/sait/wp-content/advanced-cache.php.
    Cannot continue... fix previous problems and retry.
  7. Теперь из папки wp-super-cache (которая в /wp-content/plugins) копируем wp-cache-phase1.php в папку wp-content и переименовываем его в advanced-cache.php.
  8. Плагин может не включится, особенно если у вас версия младше 2.5. Посему в файле wp-config.php вставляем строчку
    define('WP_CACHE', true);
    .
  9. Поставьте права доступа для папки wp-content CHMOD 777, обновите страницу настроек планига (чтобы конфигурация сохранилась), и верните права CHMOD 755.
  10. Теперь в .htaccess нужно прописать:
    RewriteEngine On
    RewriteBase /
    AddDefaultCharset UTF-8
    RewriteCond %{REQUEST_METHOD} !=POST
    RewriteCond %{QUERY_STRING} !.*s=.*
    RewriteCond %{QUERY_STRING} !.*p=.*
    RewriteCond %{QUERY_STRING} !.*attachment_id=.*
    RewriteCond %{QUERY_STRING} !.*wp-subscription-manager=.*
    RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$
    RewriteCond %{HTTP:Accept-Encoding} gzip
    RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz -f
    RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz [L]  RewriteCond %{REQUEST_METHOD} !=POST
    RewriteCond %{QUERY_STRING} !.*s=.*
    RewriteCond %{QUERY_STRING} !.*p=.*
    RewriteCond %{QUERY_STRING} !.*attachment_id=.*
    RewriteCond %{QUERY_STRING} !.*wp-subscription-manager=.*
    RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$
    RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html -f
    RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html [L]
    
    . Предупрежу, некоторые первые строчки в файле .htaccess уже есть, посему, делать это аккуратно!

Если вы все это осилили, то плагин этот мы вроде установили. Теперь его надо настройить.

ON — все включено.

HALF ON — супер кеш выключен, кеш включен.

OFF — все выключено

Clear all cache files when a post or page is published. — очищать вест кеш, когда публикуется страница или запись (увеличивает время публикации).

Expiry time — время жизни кеша, в секундах

How often should expired files be deleted? — как часто будут удаляться файлы кеша, в запросах.

Для начала, этого хватит с головой.


Скачать плагин с официального сайта WordPress

У вас есть много сайтов/сателлитов на CMSimple? Вы хотите их перенести на WordPress? Легко! С помощью WordPress Translator v.1.3 вы это сделаете за 5 минут, в несколько кликов, сверстаете WordPress сайт из MS Word. У этой тулзы куча возможностей, о которых вы можете прочесть тут.

Реклама → Столовый набор детский посуды серебро. Столовое серебро завод.

Отзывов (57) на «Быстродействие WordPress»


Довран пишет:

октября 12, 2008 в 09:55

Огромное спасибо. Инструкции по Кешу видел и раньше, но почему-то ничего не получалось. Прочитав Вашу, всё сразу получилось))) Спасибо ещё раз!! :grin:

Vladimir пишет:

октября 12, 2008 в 10:17

Плагин действительно полезный. Особенно после его недавнего обновления. К самой статье можно добавить: чтобы узнать, работает ли плагин нормально — проверьте в конце страниц наличие <!-- Cached page served by WP-Super-Cache -->

Анастасия пишет:

октября 12, 2008 в 16:26

Результаты эксперимента поразительные :) Сразу захотелось установить плагин кэширования, только некуда, везде стоит сборка от Макса :) Спасибо за терпение в проведении такого теста.

GoldenScrew пишет:

октября 12, 2008 в 21:27

странно, но я проверил скорость своего сайта, и он мне показывает 2 сотых секунды, врядли кэш ускорит :) :arrow:

Алексей aka Grabus пишет:

октября 12, 2008 в 21:36

GoldenScrew, может у тебя и так кеш стоит. либо сервак хороший.

Alexpts пишет:

октября 13, 2008 в 06:54

Я тоже встречал данный плагин, но там так все не расписывалось, мол просто скопировали в плагины и активировали в админке и все! Щас попробую по вашему ману все сделать. У меня правда и так показатели не плохие, но в погоней за скоростью надо попробывать ;) Еще раз спасибо за хороший ман )

its-web.ru 36.4 KB 1.57 seconds 0.04 seconds

Alexpts пишет:

октября 13, 2008 в 07:14

Теперь показатели следующие

36.47 KB 0.96 seconds 0.03 seconds

Такой вопрос, а сервак этот плагин сильно грузит? Или лучше уж пусть он, чем сотни посетителей для которых страница будет генериться...

Алексей aka Grabus пишет:

октября 13, 2008 в 07:17

Alexpts, как раз сервак то и меньше грузится.

vasret пишет:

октября 13, 2008 в 11:44

Очень грамотный пост, раньше не задумывался над увеличением WordPress.

Alexpts пишет:

октября 13, 2008 в 13:43

В самом низу настроек плагина есть блок Cache Plugins

No Adverts for Friends plugin is disabled. (requires friendsadverts.php too)

По умолчанию он отключен, как и блок настроек Super Cache Compression.

Что вы можете сказать по поводу настроек, нужно ли их включать и что они делают, как это скажется на работе сервера?

Что-то работает не так, т.к. результат стал

36.57 KB 4.43 seconds 0.12 seconds (Без кэша было лучше намного см. 2 коммента выше)

Alexpts пишет:

октября 13, 2008 в 14:04

Еще вопрос как чистить кэш через админку, т.к. за пол дня он 6 Мб на хосте сожрал уже. Expiry time 3600 — это один час, ток мне кажеться он не удалился спустя час никуда... Можете осветить более подробно все эти вопросы? Буду очень рад. Спасибо!

Алексей aka Grabus пишет:

октября 14, 2008 в 14:36

Alexpts, на сколько я понял, No Adverts for Friends позволяет контролировать вывод рекламных блоков либо какой-то код (html, javascript), в зависимости от того от куда пришел посетитель. Т.е. если он пришел с поисковика, то одна реклама, если с какого-то сайта из белого списка, то другая реклама, либо отсутствие рекламы.

А Super Cache Compression, это включение/отключение gzip-сжатия, как я понял.

На счет того что параметры изменились, сказать ничего не могу, потому как эти параметры зависят не только от этого плагина, а и от того какие плагины установлены еще, сколько сейчас человек посещает сайт, есть ли на этом же сервере сайты, и на сколько они тяжелы, посещаются ли они сейчас, и т.д.

Поэтому я и сделал по 5 тестов с периодичностью в ~10 минут. Чтоб эксперимент был как можно более точным.

Может ты как раз попал в тот момент, когда страница кешировалась.

Теперь на счет 6 метров.

Это естественно, либо мы грузим сервер, либо мы жертвуем местом на диске для кеша.

Кеш удаляется, но создается новый — свежий кеш, вдруг ты что-то изменил на странице, чтоб посетители видели обновления.

Кстати у меня уже на 11 метров кеша набралось, но у меня лимит 10 гигов, поэтому я не беспокоюсь :wink:

кстати сам кеш находится тут /wp-content/cache

Alexpts пишет:

октября 14, 2008 в 18:23

>>кстати сам кеш находится тут /wp-content/cache

Это я нашел.

Вечером случилось что-то нехорошее, все (кроме меня почему-то) кто пытался зайти на сайт не могла... Вместо этого им предлагали скачать что-то типа этого sd23esdfwe.part я долго не мог понять, что вообще такое случилось... Потом все таки решил грохнуть этот плагин... сай для всех заработал. Пока я отключил плагин, может еще как-ть потестирую. Но слишком мне это все геморойно показалось. Эффекта хорошего (и стабильного!!!) я не заметил, а вот какие-то глюки не заставили себя ждать.

Может надо попробывать все оставить астоматом (как делает сам плагин) ничего не писать в .htaccess, т.к. плагин пишет туда автоматом почти тоже самое, немного отличается и не хватает пару строчек и тд.

Пока я не в восторге остался. Не знаю может, конечно, у меня руки кривые, но доверия он мне пока не внушил...

Алексей aka Grabus пишет:

октября 15, 2008 в 04:08

Alexpts,

А ты уверен, что у тебя не было установлено WP-CACHE?

и какая версия wordpress?

и gzip у тебя включен?

бывают проблемы у хостеров с гзипом. а та ошибка хоторую ты назвал похожа на проблемы с гзипом.

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

35metod пишет:

октября 15, 2008 в 09:07

со сборкой макса плагин тоже можно ставить и даже нужно :)

Жомарт пишет:

октября 18, 2008 в 19:00

Странно, у меня и без этого плагина работает так как у вас после оптимизации :)

Алексей aka Grabus пишет:

октября 19, 2008 в 15:05

Жомарт, может у тебя сборка от Макса, а может сервер хороший.

Радкевич С. пишет:

октября 19, 2008 в 22:24

А у меня не пошел чего то, пишет Warning! PHP safe mode enabled! А вот сэйф моде похоже отключить я не могу...

Алексей aka Grabus пишет:

октября 19, 2008 в 22:35

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

Ильмир пишет:

октября 20, 2008 в 21:27

Сделал все как написано здесь после этого мой блог вообще перестал работать. Выходит такое сообщение:

Warning: Cannot modify header information — headers already sent by (output started at /home/****/*******/my-sotik.com/public_html/blog/wp-config.php:1) in /home/****/*******/my-sotik.com/public_html/blog/wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 36

Warning: Cannot modify header information — headers already sent by (output started at /home/****/*******/my-sotik.com/public_html/blog/wp-config.php:1) in /home/rola/domains/my-sotik.com/public_html/blog/wp-includes/pluggable.php on line 770

Алексей aka Grabus пишет:

октября 20, 2008 в 23:46

Ильмир, почти на 100% уверен что ты не правильно сохранил файл wp-config.php.

Попробуй открыть файл в блокноте, выбери «Сохранить как...», выбери кодировку «UTF-8», жми «Сохранить».

Если не получится, стучись в аську, разберемся.

Екатерина пишет:

октября 21, 2008 в 10:42

Алексей,

большое спасибо, с Вашей помощью наконец-то смогла разобраться с плагином wp-super-cache, а то он у меня был активирован, но пребывал в нерабочем состоянии, застопорившись на advanced-cache.php does not exist.

Вы достойно приняли эстафету у Анастасии :yes: , по ее мануалам осваивала NextGen Gallery.

Алексей aka Grabus пишет:

октября 24, 2008 в 21:56

Екатерина, всегда рад :hat:

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

SSERAPHIM пишет:

октября 25, 2008 в 16:59

У меня оказывается скорость загрузки вобще маленькая была 1.24sec. После установки плагина 0.18-0.21sec в среднем :sd: . Скорость после настроек не увеличилась почти (всего на 0.03). В моём случае достаточно просто активировать плагин и не совершать лишних телодвижений. Спасибо огромное :cool:

Владимир пишет:

октября 26, 2008 в 16:07

Здоровтя, Усем, но что же делать тем, кто перешел на навые пресса, у нас как бы все предустановлено Кактусовичем, а загрузон тем не менее очень плохой, воть!!! :razz:

Алексей aka Grabus пишет:

октября 26, 2008 в 16:43

Владимир, на 2.7 чтоль?

Владимир пишет:

октября 27, 2008 в 07:55

Grabus, знаешь я чего-то не нашел там вообще настроек, сбросить кнопка есть и усе.

Алексей aka Grabus пишет:

октября 27, 2008 в 08:08

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

А как ты понял что WP-Super-Cache установлен? Может плагин есть, но по умолчанию не активирован?

Владимир пишет:

октября 27, 2008 в 09:03

Дело все было так, плагин действительно в сборке шел, я его активировал, по началу он вызвал фатальную ошибку, понятно почему, у меня работал wp-cache. Его убрал, все активировал, почистил папку. Через 2 часа в папке опять стало много файлов, как как посетители приходили. Самих настроек нет, вот и весь прикол. Может действительно он не работает? :idea:

Алексей aka Grabus пишет:

октября 27, 2008 в 09:16

Владимир, попробуй следующее:

1. на всякий случай сделай бекап файлов wp-content/wp-cache-config.php и wp-content/advanced-cache.php.

2. теперь удали их.

3. удали wp-cache.

4. глянь нет ли чего от wp-cache в wp-config.php.

5. установи wp-super-cache.

а что тебе не нравится в wp-cache, что ты его меняешь на wp-super-cache?

я просто не знаю, wp cache не юзал никогда.

Владимир пишет:

октября 27, 2008 в 17:06

Да вот теперь и не знаю, по идее надо было измерить сначала с wp-cache. Но как всегда подумалось новое, значит лучше, а получилось как всегда. Теперь это превратилось в сплошной эксперимент. Сказать, что я доволен, нет. Это дурной опыт, думаю повторять его не стоит. :idea:

Алексей aka Grabus пишет:

октября 27, 2008 в 18:40

Владимир, а ты попробуй все сначала.

удали блог, поставь по новой, и проверь.

или блог не новый и ты обновлял его? в таком случае конечно печальный опыт :oops:

Владимир пишет:

октября 27, 2008 в 22:07

Да блог не новый, я его обновлял, нашел в этой версии управление версиями и обновил настройки wp-config.php, как оно повлияло страница весом в 72KB, время загрузки 2,08s, а Average Speed per KB — скорость — 0,03, думаю круче только яйца. Или я не прав??? :grin:

SMM пишет:

октября 28, 2008 в 19:45

:razz: ничего не понимаю ... все сделал ... а результат все тот же ...

trouble2maker пишет:

ноября 5, 2008 в 00:47

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

только я вот еще читал, что хорошо бы для ускорения некоторые запросы заменить в шаблоне на html. может быть об этом есть где почитать?

ynas пишет:

ноября 6, 2008 в 23:45

Кстати еще один плюс этого плагина: однажды у хостера надолго отвалился SQL сервер, но сайт на вордпрессе работал, т.к. почти весь был закеширован, получился как бы статический html сайт. Правда работал он только в эксплорере, в мозилле не грузился. Я еще долго не мог понять почему сайт в дауне, а счетчики фиксируют посетителей :yes:

oldvovk пишет:

ноября 8, 2008 в 01:51

Ну во первых сервис не совсем ясный.

Для моего показывает загрузку за 5 сек, хотя визуально и скрипт сайта пишет о времени 0,25

Во-вторых, не усердствовал бы с суперкешем. 6 мб в кеше это еще ерунда, может намного больше наворочать.

В- третьих. Чем не устраивает внутренний кеш? чем не устраивает кеш от версии 233, или плагины кеша от макса или Ю.Б. ? Вариант исполнения тот же, чуть меньше выигрыш по времени, зато кеш не становится безразмерным.

oldvovk пишет:

ноября 8, 2008 в 02:19

Да еше по поводу. Если считается, что на рувебе, с включенным кешем загрузка блога в 5 сек — то это жуть.

По поводу блога надо посмотреть его оптимизацию.

1. Поубивать лишние и ненужные плагины.

2. Зачистить базу от ненужного хлама навороченного старыми плагинами

3. Уточнить зачем вот эта фигня у блога

если он на русском

4. Проверить почему в коде страницы вот такое

іРёРЅ для быстрой рассС

Похоже база не согласована с блогом по кодировке.

Т.е. сначала оптимизируеи сам блог и его работу. Потом, если не нравится, подключаем еще кеш.

Алексей aka Grabus пишет:

ноября 10, 2008 в 02:17

trouble2maker, у Макса.

ynas, тоже самое было )

oldvovk, ссылки на плагины Ю.Б. и Макса дай плиз.

На счет 3 и 4 пункта, не совсем понял, уточни плиз.

eu4ria пишет:

ноября 13, 2008 в 23:35

а у меня вот такое сообщение теперь на каждой странице сайта :cry:

Warning: Cannot modify header information — headers already sent by (output started at /.../wp-config.php:2) in /.../wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 38

это если WP Super Cache Status в «on» или «half on», ну а когда выключаю — все нормально становиться

И config.php сохранен в UTF-8 точно!

Алексей aka Grabus пишет:

ноября 13, 2008 в 23:59

eu4ria, в wp-config.php закомментировал строчку

define ('WP_CACHE', true);

?

eu4ria пишет:

ноября 14, 2008 в 00:06

и как этот плагин теперь удалить? я и .htaccess вернул старый и wp-config а все равно куча сообщений об ошибках. а когда в админке что-то меняешь то вот такое сообщение выскакивает

Warning: Cannot modify header information — headers already sent by (output started at /.../wp-config.php:2) in /.../wp-includes/pluggable.php on line 694

Алексей aka Grabus пишет:

ноября 14, 2008 в 04:33

eu4ria, какие сообщения об ошибках?

Иван пишет:

ноября 14, 2008 в 19:59

Интересует чтобы кеш был насовсем.То есть, чтобы не было

Expiry time

oldvovk пишет:

ноября 14, 2008 в 23:55

Конфиг может и сохранен в utf но в utf с boom,

соответственно глючит вывод хедера. Используй нотепад2 или нотепад++

oldvovk пишет:

ноября 15, 2008 в 00:18

Мое решение 2aw.org/kesh-v-wp251/

Обсуждали на forum.maxsite.org/viewtop...?id=4792&p=2

Плагины ЮБ www.portal.kharkov.ua/soft/object-cache.zip

от макса — maxsite.org/go/maxsite_cms_cache.zip

По поводу 3 — был вопрос о

meta name="language" content="en, sv"

сайт то на русском

По п4 — в коде html страниц присутствуют кракозябры русского — соответственно я так понимаю что блог работает в utf а база в чем то другом, и приходится перекодировать налету — а это доп время

oldvovk пишет:

ноября 15, 2008 в 00:24

Извини, забыл. Объедини потом посты.

Учитывая, что у тебя нарастает число комментов,

чтобы не превращать страницу в простыню — найди

у лекактуса плагин разбиения комментов на страницы

Екатерина пишет:

ноября 28, 2008 в 15:42

1. Скачала плагин.

3. Разархивировала.

4. СКопировала папку wp-super-cache в директорию плагинов /wp-content/plugins.

В папке панели управления плагинами не могу активировать этот плагин, он просто там не отображается!?!?! Что делать?

:razz:

Екатерина пишет:

ноября 28, 2008 в 17:39

Перекопировала, все получилось. Активировала плагин. Теперь не получается выполнить след. пункт:

Теперь из папки wp-super-cache (которая в /wp-content/plugins) копируем wp-cache-phase1.php в папку wp-content и переименовываем его в advanced-cache.php

Что делать?!?

:razz:

Alexpts пишет:

декабря 16, 2008 в 16:21

Больно муторно все это, я использую Hyper Cache — все намного проще и работу свою отлично делает! ))

ScorpAL пишет:

декабря 20, 2008 в 10:27

11.22 KB 0.53 seconds 0.05 seconds

Сергей Гипш пишет:

июня 18, 2009 в 19:20

А мой блог почему-то очень медленно стал работать? Может быть вы сможете посказать почему?

Я сам не специалист по ВП, уже не знаю че и делать — :razz:

DarkMister пишет:

июня 13, 2010 в 15:02

У меня выдаёт следующую ошибку:

Warning! PHP Safe Mode Enabled!

You may experience problems running this plugin because SAFE MODE is enabled.Your server is set up to check the owner of PHP scripts before allowing them to read and write files.

You or an administrator may be able to make it work by changing the group owner of the plugin scripts to match that of the web server user. The group owner of the /www/zzl.org/b/o/n/bondarenko/htdocs/wp-content/cache/ directory must also be changed. See the safe mode manual page for further details.

Cannot continue... fix previous problems and retry.

Подозреваю что проблема в самом хостинге...другие плагины для кеширования тоже отказывались работать...Что можно сделать в данной ситуации?

Анастасия пишет:

июня 14, 2010 в 17:48

Написать хостинг-провайдеру, чтобы отключили Safe Mode, если хостинг конечно предоставляет такую возможность.

Роман Елькин пишет:

апреля 15, 2011 в 20:11

Сколько места на сервере занимают кешированные страницы?

Анастасия пишет:

апреля 21, 2011 в 10:53

Я не замечала, чтобы не хватало места из-за кешированных страниц, но вроде там есть в настройках дополнительное их сжатие.

Ваш отзыв


© 2007-2011 Уроки WordPress
Дизайн WpHelp.ru