Статья 33 комментария
18.12 2009

Как я уменьшил время загрузки своего блога в 4 раза

Скорость загрузки блога wordpressНа самом деле ускорить загрузку своего блога в несколько раз можно даже не применяя никаких плагинов.

Я так и сделал:

  • Включил zlib компрессию. Для этого нужно сначала убедиться в том, что она включена на вашем сервере (95% что да). Создаем любой php файл, например test.php, добавляем в него вот такую строку:
<?php phpinfo(); ?>

и закачиваем его на сервер в корневую директорию блога. После этого вводим в адресную строку браузера вот такой адрес: http://ваш_блог.ру/test.php, в появившемся окне находим табличку zlib (проще через встроенный в браузер поиск, который вызывается комбинацией клавиш ctrl+f). В колонке напротив должно быть написано enabled. Если вдруг zlib у вас отключен (disabled), то можете написать своему хостеру – возможно он сможет включить.

После этого нужно в самое начало файла index.php добавить следующий код:

<?php ini_set('zlib.output_compression', 'On');
ini_set('zlib.output_compression_level', '1'); ?>

Всё компрессия включена и вы на глаз сможете заметить прирост скорости загрузки вашего блога. Чтобы узнать точные результаты, можете до и после включения компрессии проверить скорость загрузки своего блога с помощью сервисов, о которых я писал в статье Юзабилити в wordpress. Часть 6 – скорость загрузки.

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

  • Так же я почистил и оптимизировал базу данных:
  1. Отключил ревизии записей и удалил все сохраненные ревизии. Дело в том, что при каждом изменении записи wordpress создает её копию с изменениями, а не заменяет ей уже существующую. Таким образом у меня скопилось порой по 20 ревизий каждой статьи – никому не нужный хлам в базе данных, из-за которого она превращается в помойку.
  2. Раньше отключить ревизии можно было добавив в файл config.php всего одну строчку:

    define('WP_POST_REVISIONS', false);

    но теперь это почему-то не срабатывает. К счастью есть один очень полезный плагин – Disable Revisions, который не только отключает ревизии, но и удаляет все сохраненные из базы данных, тем самым избавляя нас от необходимости лезть в базу данных и делать это вручную.

  3. Оптимизировал базу данных. Это можно сделать с помощью phpMyAdmin – отметить галочкой все таблицы и выбрать из выпадающего списка «оптимизировать». В новой версии phpMyAdmin есть даже опция «выбрать нуждающиеся в оптимизации».

А можно это сделать проще – установить плагин WP-optimize. Кроме оптимизации базы данных он так же умеет удалять ревизии записей, но мы это уже сделали. Можно, конечно не устанавливать плагин Disable Revisions, но тогда придется регулярно их удалять с помощью WP-optimize. Смотрите сами.

  • И наконец я оптимизировал CSS файлы с помощью сервиса Clean CSS. Он предлагает 5 способов компрессии и много других настроек. Уровень сжатия зависит от того, насколько читабельным вы хотите, чтобы был ваш код. Чем больше компрессия, тем хуже читабельность. Если вы его никогда не изменяете, то можете выбирать максимальное сжатие.

Всё что нужно сделать, это скопировать CSS код, который вы хотите оптимизировать и вставить его в текстовое поле CSS-Code или указать путь к файлу. Не забудьте поставить галочку Output as file – компрессия будеть чуть больше. Сохраните полученный файл и замените им старый.

Рекомендую всегда делать резервную копию файла стилей, особенно если вы будете использовать Sort Selectors. Если вы снимете галочку Save comments, то не забудьте в полученный файл добавить первый комментарий – без него wordpress не будет отображать текущую тему в списке доступных.

Еще я вырезал много запросов из своего шаблона, но об этом я подробно напишу в одном из следующих постов. Спасибо за внимание!

P.S. Информационный спонсор статьи о том, как увеличить скорость заргузки своего блога на движке WordPress – бесплатная доска объявлений о купле и продаже, а так же об обмене самыми разнообразными товарами – Doska.ya74.com

  1. Комментарии:

  2. 18 декабря 2009

    Довольно актуально для меня, сейчас попробую, спасибо :)

    Идёт в интересно почитать ;)

    Ответить

    Ян Такушевич отвечает:

    Вытянул тебя из спама. Видимо Терехов твои комментарии как спам помечает :)

    Ответить

  3. 18 декабря 2009

    Кэширование жрет оперативку: +10 метров примерно. Компрессия эффективна, но тоже грузит. Наиболее эффективного ускорения удавалось добиваться уменьшая количество запросов к БД путем правки шаблона и отключения некоторых плагинов и использованием урезаной локализации от Лекактуса. CSS рекомендую не трогать так как часто баги потом лезут. Можно взять и объединить все CSS в один файлик (все это из двига, темы и плагинов) руками :gamer:

    Ответить

    Ян Такушевич отвечает:

    CSS лучше не трогать тем, кто в случае проблем не сможет их решить, хотя я писал что лучше делать бекап на всякий случай.
    Объединить всё CSS в один файл – идея хорошая, но далеко не у всех плагинов есть возможность отключить их CSS файлы, а загружать 2 раза одни и те же стили – вообще глупо.

    Ответить

    slaFFik отвечает:

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

    Ответить

    Ян Такушевич отвечает:

    Да, но после обновления этих плагинов всё это придется делать заново.

  4. 18 декабря 2009

    Наконец полезный пост об оптимизации ВП не с помощью удаления из шаблона bloginfo(‘url’); и т.п. :)

    Спасибо, это действительно полезная информация. Правда продавцам ссылок в биржах способ кеширования никак не подойдет. :)

    Ответить

    lilumi отвечает:

    Почему это не подойдет? САПА нормально работает на кешированных wp_super_cache сайтах

    Ответить

  5. 19 декабря 2009

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

    Ответить

    Ян Такушевич отвечает:

    В статье я как раз таки написал КАК я это сделал. Что не понятно?

    Ответить

  6. 19 декабря 2009

    Ян, возможно, как раз с этого и началось, что я не могу оставить комментарий ни на одном блоге, где стоит акисмет :(

    Ответить

    Ян Такушевич отвечает:

    Тогда читай вот эту статью Как выбраться из спам-базы Акисмета. Проверено на себе!

    Ответить

  7. 19 декабря 2009

    У меня кстати zlib компрессия коряво заработала, на разных браузерах и на разных версиях была проблема с кодировкой, хотя zlib на сервере включен, но видимо настроен некорректно.

    А за ссылку спасибо :)

    Ответить

    Ян Такушевич отвечает:

    Напиши хостеру – наверняка помогут разобраться с проблемой.

    Ответить

  8. 19 декабря 2009

    Скажите пожалуйста, Вы рекомендуете отключать ревизии с помощью Disable Revisions. Он работает лучше revision-control или выбор не имеет большого значения.

    Ответить

    Ян Такушевич отвечает:

    Disable revisions состоит буквально из нескольких строк кода, т.к. не имеет настроек, в отличие от revision control. Если вам эти настройки нужны, то используйте revision control, но это лишняя нагрузка на сервер, а мы ее как раз таки хотим уменьшить. Выбор за вами.

    Ответить

    Demin отвечает:

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

    Ответить

  9. 19 декабря 2009

    Так zlib не только к вордпрессу применима.

    А вообще, установка плагина для оптимизации и уменьшения нагрузки – это парадокс. Устанавливая плагин, вы добавляете «веса» своему движку, т.е. с каждым плагином он жрет больше и больше ресурсов.

    Поэтому, рекомендую посмотреть на внутренности плагина и сделать все вручную, если позволяют знания. Обычно в водпресс плагинах 200-300 строк выделены под создание удобной страницы в админке, и всего 20 строк, которые, собственно, и делают всю работу. Именно эти 20 строк вам и нужны.

    При включении компрессии, сервер грузится больше и вдобавок к этому, браузеры и компьютеры клиентов (юзеров) тоже используют больще системных ресурсов, так как полученный контент нужно расжать. И это происходит при каждом запросе.
    При кэшировании же, страница сохраняется один раз и потом происходит простой обмен статическим текстом. По мне, так лучше использовать 10МБ оперативки один раз на кэширование, чем столько же при каждом запросе при использовании zlib. Компрессия будет полезна, если у вас действительно тяжелые страницы по размеру (200+ КБ). Обыкновенному же блогу с простымя статьями она не особо нужна. Не нужно бросаться и включать сжатие сразу же, нужно учесть многие моменты: нагрузка сервера, количество юзеров на сайте, средний размер HTML кода и т.д. Оптимизация оптимизации – рознь.

    Ответить

  10. 23 декабря 2009

    Хмм. Еще и здесь прокомментирую. А откуда данные, что компрессия и кэширование не работают вместе? Мои эксперименты показали, что работают…

    Ответить

    Ян Такушевич отвечает:

    Об этом я читал здесь: http://blogproblog.com/wordpress-cache/

    Ответить

  11. 26 декабря 2009

    Ускорение работы WP дело актуальное, так как это один из факторов ранжирования сайта в Гугле.
    Интересные сервис, по укорачиванию CSS нужно будет попробовать.

    Ответить

    Ян Такушевич отвечает:

    Во второй части этого поста есть еще один способ оптимизировать CSS и Javascript. Мне он нравится больше, но решать Вам.

    Ответить

  12. 27 декабря 2009

    То-есть, если я правильно поняла, самое простое и оптимальное – плагин WP-optimize?
    А вот мой вопрос, Ян: сильно ли влияет на скорость работы блога, если в папке тем загружено очень много тем оформления для просмотра пользователей, и они же продублированы в папке files в виде зип-архивов для свободного скачивания?

    Ответить

    Ян Такушевич отвечает:

    Wp-optimize может ускорить блог очень незначительно, Вы можете даже не заметить результата. Так что это самое простое, но далеко не самое оптимальное :) Количество загруженных файлов на хостинг (не важно, что это – темы или порно) никак не влияет на скорость загрузки сайта.

    Ответить

  13. 28 декабря 2009

    Спасибо за отличные советы. Оптимизировал свой блог на WP.

    Ответить

  14. 28 декабря 2009

    Сначала надо на плагины посмотреть. Не знаю, какие именно, но некоторые грузят страницу сильно. У меня около 500 кб страничка весила. Как-то пару плагинов отключил (а до этого разобраться пытался все), так страничка сразу же 50 кб стала весить. Причину не знаю, говорю сразу

    Ответить

  15. 28 декабря 2009

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

    Ответить

    Ян Такушевич отвечает:

    У меня на хостинге нет ограничений ни на трафик, ни на память :) Но послу включения компрессии я на глаз заметил ускорение раза в два, конкретные цифры привести не могу, потому что использовал много разных способов, а замерять скорость с помощью сервисов каждый раз забывал.

    Ответить

  16. 28 декабря 2009

    Я тоже на рабочем сервере с двумя двухъядерными процессорами и двумя гигами памяти как только не извращался, а когда перешел на хостинг стоимостью 100 рублей в месяц, начал смотреть на цифры :)

    Ответить

  17. 30 декабря 2009

    Я предпочитаю использование модуля mod_deflate.

    Ответить

  18. 14 января 2010

    phpinfo – это функция. Формат вызова функции – phpinfo()

    Ответить

    Ян Такушевич отвечает:

    Спасибо, поправил!

    Ответить

  19. 5 мая 2010

    А нагрузка на сервак, не возрастет?

    Ответить