Быстродействие 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