Быстродействие 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. У этой тулзы куча возможностей, о которых вы можете прочесть тут.

 
 
 

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



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, если хостинг конечно предоставляет такую возможность.

Ваш отзыв


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