Как ускорить WordPress блог и снизить нагрузку на сервис | Молодой блог

Не так давно я уволился с работы (учеба потребовала) и стал лелеять мысль о небольшом заработке на сайтах. Как только я начал лелеять эту мысль, все и началось. Сначала Яндекс выплюнул блог из индекса, но про это я быстро забыл. Потому что на одном из хостингов закончились деньги и решил перевести все сайты в одно место. Какой же это было ошибкой.

Сначала все шло хорошо, но позже  неожиданно все сайты стали грузиться с огромной задержкой (150 сек.). Обратившись в тех поддержку, я получил ответ:

 Добрый день.

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

Статистику по нагрузке можно посмотреть в контрольной панели, на закладке: Главная / Статистика / Использование ресурсов / Нагрузка на CPU. Причину нагрузки можно выяснить на основании лог-файлов использования процессора.

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

Отключаем хотлинки

Каждый раз когда вы используете свой сервер для хранения изображений вы существенно больше используете его ресурсов. Довольно часто люди заимствуют ваши изображения, ставя хотлинки на своих серверах. Это не только занимает канал, но и создает определенную нагрузку на сервер.
Добавьте следующий код в .htaccess файл, заменив example.com на имя вашего домена, чтобы отключить использование хотлинков:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/.*$ [NC]
RewriteRule .*\.(gif|jpg|png|ico)$ - [F,L]
</ifModule>

Используем внешний хостинг для хранения изображений

Хостинг изображений на внешних серверах поможет значительно снизить нагрузку на сервер.

Сжимаем java-скрипт код

Сжатие javascript довольно простая задача. Поскольку он выполняется при каждом просмотре страницы, вы можете уменьшить размер Javascript, удалив все незаполненное пространство. Сам я пока еще не увлекся такими вещами, но вот  вам простой инструмент, который поможет сделать это за вас — JavaScript Compressor.

Javascript в начале страницы

Часто случается так, что сайт начинает загружаться медленно или вообще останавливается, т.к. другой ресурс, с которого вызывается javascript(на пример Digg badges, Tweetmeme и т.д.), не доступен или оффлайн. Чтобы избежать этого вынесите весь javascript код в конец страницы, а то что по каким-то причинам вынести не удалось – попробуйте заключить в iFrame.

Используем кэш браузера

Сам по себе кэш браузера, конечно не сделает ваш блог быстрее, однако поможет снизить нагрузку на сервер, кэшируя часто загружаемые объекты(стили, элементы интерфейса и т.п.).
Попробуйте вставить следующий код в .htaccess файл:

FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch "\.(jpg|gif|png|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 year"
</filesmatch>
</ifmodule>

Сжимаем статические данные

Вы можете уменьшить размер загружаемой страницы позволив браузеру принимать и передавать данные в сжатом виде. Это также снизит загрузку канала и количество загружаемых данных.
Следующий код в .htaccess может помочь вам в этом:

</pre>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
 BrowserMatch ^Mozilla/4 gzip-only-text/html
 BrowserMatch ^Mozilla/4.0[678] no-gzip
 BrowserMatch bMSIE !no-gzip !gzip-only-text/html
<pre>

WordPress

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

Обновляемся до последней версии

Обновления до более новых версий позволяют не только устранять обнаруженные уязвимости, но и улучшают производительность. Для примера в wordpress 2.8 была существенно оптимизирована работа с БД.

Сокращаем количество запросов

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

<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />

Мы запросто можем переписать в:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Уже на два запроса меньше. Довольно просто, не правда ли?

WordPress Plugins

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

WP Super Cache
Это, пожалуй, лучший плагин к WordPress. WP Super Cache создает статические html версии каждой страницы и загружает их каждый раз, обходясь тем самым без запросов к БД. Это значительно увеличивает скорость загрузки страниц и снижает нагрузку на сервер. Строго рекомендуется к установке. Я пока сам еще до конца с ним не разобрался, как только мне удасться довести его до ума, подробно опишу это в статье.

просмотреть

Hyper Cache

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

просмотреть

PHP Speedy WP
Этот плагин решает другую проблему, обозначенную в этой статье – удаление незаполненного пространства в CSS & javascript. Однако есть некоторые проблемы совместимости этого плагина с WP Super Cache, кроме того он долгое время уже не обновлялся, потому используйте на свой страх и риск.

просмотреть

Optimize DB
Плагин позволяет оптимизировать таблицы MySQL без помощи PHPmyadmin.

просмотреть

Всех благ и удачи вам с вашими сайтами, что б все как у людей а не как у меня:)