Ускоряем wordpress. Как ускорить WordPress


  • Перевод

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

1 Тестируем текущую скорость

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

Не забудьте обновить до последней версии PHP и Apache .

3.1 Отключите неиспользуемые сервисы
Вы можете получить больше доступной оперативной памяти, отключив неиспользуемые службы и оптимизировав MySQL и Apache.
  • Удалите ClamD;
  • Настроить SpamD на использование только 1 дочернего процесса;
  • Удалите Mailman, если, конечно, вы не собираетесь запускать почтовый сервис.
3.2 MYSQL Query Cache
Поскольку стабильность и скорость Wordpress довольно сильно зависит от работы БД, стоит убедиться, что настройки в my.cnf соответствуют возможностям сервера. В первую очередь следует установить настройки кэширования запросов, добавив в my.cnf следующие строки:
query_cache_type = 1
query_cache_limit = 2M
query_cache_size = 20M

Чтоб настройки вступили в силу придется перезапустить сервис MySQL сервис.
3.3 Кэш компилятора: XCache или Eaccelerator?
Кэш компилятора увеличивает производительность откомпилированных скриптов на сервере, кэшируя их – это поможет сократить время выполнения PHP скриптов. Стоит попробовать и то и другое решение, однако по результатам опытов увеличение производительности при использовании Xcache на 5% выше, чем с Eaccelerator.
3.4 Увеличьте максимальное число соединений на Apache
Увеличение максимального количества соединений в httpd.conf повысит производительность, т.к. сервер сможет обрабатывать большее количество подключений за раз. Однако, следует изменять этот параметр осторожно, дабы не исчерпать весь объем оперативной памяти и не замедлить работу сервера, потому всегда тестируйте новые настройки прежде чем запускать их в работу. Установим к примеру 150 коннектов:
max_connections = 150

Не забудьте рестартить сервис Apache, чтоб применить настройки.

4 Оптимизация кода и графики

Итак, сервер заработал и теперь настало самое время поиграть с кодом Wordpress.
4.1 Отключите хотлинки
Каждый раз когда вы используете свой сервер для хранения изображений вы существенно больше используете его ресурсов. Довольно часто люди заимствуют ваши изображения, ставя хотлинки на своих серверах. Это не только занимает канал, но и создает определенную нагрузку на сервер.
Добавьте следующий код в .htaccess файл, заменив example.com на имя вашего домена, чтобы отключить использование хотлинков:
< IfModule mod_rewrite .c >
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/.*$
RewriteRule .*\.(gif|jpg|png|ico)$ -
4.2 Используйте внешний хостинг для хранения изображений
Хостинг изображений на внешних серверах поможет значительно снизить нагрузку на сервер. В примере ниже вы можете видеть снижение объема используемой оперативной памяти на одном из блогов после переноса изображений на сервис Amazon S3 .

4.3 Сжимайте java-скрипт код
Сжатие javascript довольно простая задача. Поскольку он выполняется при каждом просмотре страницы, вы можете уменьшить размер Javascript, удалив все незаполненное пространство. Вот простой инструмент, который поможет сделать это за вас - JavaScript Compressor .
4.4 Javascript в начале страницы
Часто случается так, что сайт начинает загружаться медленно или вообще останавливается, т.к. другой ресурс, с которого вызывается javascript(на пример Digg badges, Tweetmeme и т.д.), не доступен или оффлайн. Чтобы избежать этого вынесите весь javascript код в конец страницы, а то что по каким-то причинам вынести не удалось – попробуйте заключить в iFrame.
4.5 Используйте кэш браузера
Сам по себе кэш браузера, конечно не сделает ваш блог быстрее, однако поможет снизить нагрузку на сервер, кэшируя часто загружаемые объекты(стили, элементы интерфейса и т.п.).
Попробуйте вставить следующий код в .htaccess файл:
FileETag MTime Size
< ifmodule mod_expires .c >
< filesmatch "\.(jpg|gif|png|css|js)$" >
ExpiresActive on
ExpiresDefault "access plus 1 year"

4.6 Сжимайте статические данные
Вы можете уменьшить размер загружаемой страницы позволив браузеру принимать и передавать данные в сжатом виде. Это также снизит загрузку канала и количество загружаемых данных.
Следующий код в .htaccess может помочь вам в этом:
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 no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
4.7 Используйте CDN для статических файлов
Если хранить все изображения на одном и том же домене, то браузер будет ожидать их загрузки одного за другим. Допустим на странице их у вас есть 12 штук, если вы разделите их между тремя поддоменами, они будут загружаться одновременно из трех «разных» источников вместо того, чтоб загружаться браузером по очереди из одного.
Можете попробовать перенести все css & javascript файлы на files.yoursite.com , а изображения и временные файлы на static.yoursite.com . Или же просто использовать CDN (Content Delivery Network) – большая сеть серверов, расположенных по всему миру, которые позволят не только хранить ваши файлы на разных поддоменах, а значит загружать их параллельно, но и доставлять пользователю данные с самого близкого к нему сервера. Все это позволит загружать данные намного быстрее.

5 Wordpress

В этой части статьи мы рассмотрим приемы для улучшения производительности, которые можно применить непосредственно к Wordpress.
5.1 Обновитесь до последней версии
Обновления до более новых версий позволяют не только устранять обнаруженные уязвимости, но и улучшают производительность. Для примера в wordpress 2.8 была существенно оптимизирована работа с БД.
5.2 Отключите Post Revisions
Во всех версиях wordpress, начиная с 2.6, редакции ваших статей каждый раз во время правки автоматически сохранялись. Это замедляет работу БД и увеличивает ее размер без особой надобности.
Чтоб отключить post revisions, добавьте следующую строку в wp-config.php :
define("WP_POST_REVISIONS", false);

Чтобы удалить сохраненные ранее ревизии текста, выполните следующий запрос в PHPmyadmin:
DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = "revision"
5.3 Сократите количество запросов
Уберите ненужные запросы, чтоб ускорить генерацию страницы. Например, следующий типичный код, встречающийся во всех темах для wordpress:
< meta http-equiv ="Content-Type" content ="< ?php bloginfo ("html_type" ); ?> ; charset= " />

Мы запросто можем переписать в:
< meta http-equiv ="Content-Type" content ="text/html; charset=UTF-8" />

Уже на два запроса меньше. Довольно просто, не правда ли?
6 Wordpress Plugins
И на последок предлагаю вашему вниманию несколько плагинов, которые могут повысить производительность wordpress. Как только все, описанное выше, будет выполнено, эти плагины помогут добиться еще более высокой производительности.

Wordpress в стандартной установке довольно медленный. По умолчанию движок не использует некоторые возможности современного Веба для значительного своего ускорения. Существует целая куча плагинов для оптимизации Wordpress"a. Давайте наведем в них порядок и проведем капитальную оптимизацию.

Прежде чем приступить, посмотрим, что показывает голая установка Wordpress по Pagespeed :

Результат 76 из 100 довольно низкий. Посмотрим, насколько можно увеличить этот показатель.

Серверная часть

Nginx
Если Вы еще не используете Nginx, пора переехать на него. Простое и мощное решение. Конфигурация для работы с поддержкой permalinks и кешированием статики:

Server { server_name wp.com; root /var/www/wp; # путь к WP index index.php; location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ { access_log off; log_not_found off; expires max; # кеширование статики } location / { try_files $uri $uri/ /index.php?$args; # permalinks } location ~ \.php$ { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } }

PHP кеш
Если у Вас нет каких-то особых причин, по которым Вы не можете установить APC, включайте его обязательно. Проверяем наличие APC (в ответ получим список настроек APC):

Php -i | grep apc

В версиях PHP после 5.5 есть встроенный модуль opCache, так что APC ставить не прийдется.

Тюнинг Mysql
Wordpress использует InnoDB, а это значит мы можем существенно увеличить производительность MySQL, подстроив ряд параметров (файл my.cnf) под наше железо:

Размер буфера InnoDB лучше поставить в половину доступной оперативной памяти:

Innodb_buffer_pool_size = 256M

Не забываем включить кеширование MySQL:

Query_cache_size = 32M query_cache_limit = 1M

Более расширенная настройка MySQL для Wordpress.

Кеширование

Это наиболее важный пункт. Кеширование может дать значительное ускорение сайта и экономию ресурсов сервера. Для наглядности будем использовать ab от Apache . Проверим стандартную установку Wordpress без кеширования. Запросы направляем через локальную сеть, поэтому задержку ничего, кроме самого Wordpress"a не создает:

Ab -c 10 -n 500 http://wordpress/

Получаем среднее время на запрос около 50мс:

Total transferred: 4183000 bytes HTML transferred: 4074500 bytes Requests per second: 17.62 [#/sec] (mean) Time per request: 567.421 (mean) Time per request: 56.742 (mean, across all concurrent requests) Transfer rate: 143.98 received

Хром показывает среднее ожидание ответа на уровне 150мс (сервер находится в Нидерландах):

WP Super Cache
Этот плагин позволяет включить кеширование буквально в одно действие. Кроме стандартных настроек, он содержит большое количество параметров для тюнинга кеша. Качаем плагин, активируем его в панели управления и включаем кеш:

С включенным WP Super Cache получаем уменьшение среднего времени на запрос в 25 раз(!):

Total transferred: 4293500 bytes HTML transferred: 4146500 bytes Requests per second: 499.01 [#/sec] (mean) Time per request: 20.040 (mean) Time per request: 2.004 (mean, across all concurrent requests) Transfer rate: 4184.61 received

Cреднее ожидание ответа в Хроме уменьшилось в 3 раза:

В качестве серверной альтернативы WP Super Cache можно использовать Varnish . Он позволяет снизить время на обработку запроса еще почти на порядок, но само решение менее гибкое (хорошо подойдет для блогов без элементов динамики).

Стили, скрипты и картинки

Минификация и сжатие
Минификация CSS/JS может сэкономить 10...15% их размера. Для включения минификации статики есть модуль WP Minify . Качайте, активируйте и модуль начнет работать. Gzip позволит уменьшить размер текстовых файлов в несколько раз. В Nginx"e включается так:

Server { ... gzip on; gzip_disable "msie6"; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript; ... }

Оптимизация картинок
Картинки могут составлять очень большую часть общего размера страницы. Lossless сжатие картинок может сэкономить 30...40% их размера. Это умеет делать модуль EWWW Image Optimizer . Для его работы понадобится установить imagemagick и библиотеку gd:

Apt-get install imagemagick php5-gd

Хорошие практики и опыт

  • Лучше всего выбирать VPS для хостинга Wordpress. На Shared хостинге многое из описанного выше сделать невозможно. Кроме этого, VPS сейчас достаточно дешевый.
  • Проверяйте темы с помощью Pagespeed перед использованием
  • Очищайте корзину
  • Удаляйте старые ревизии постов
  • Удаляйте спам-комментарии
  • Отключайте трекбеки в моменты, когда все становится совсем медленно
  • Раздавайте RSS через feedburner

В результате

У нас получилось голую установку Wordpress разогнать почти в 100 раз по времени генерации страницы (мы включили Varnish) и увеличить показатель по Pagespeed с 76 до 93:

Представляю наиболее полную инструкцию с способами по ускорению работы сайта на WordPress. Благодаря описанным ниже способам я ускорил загрузку своего сайта с 24,40 секунд до 1,41 секунды. Увеличил скорость загрузки в 17,3 раза! Хороший результат. Чтобы узнать как — читайте полную статью.

Замеры скорости работы сайта я проводил сервисом Pingdom Speed Test . Тестировал главную страницу сайта. Смотрите ниже показатели сайта «до» и «после» улучшений, и короткую и полную инструкцию по ускорению сайта.

Показатели сокрости загрузки сайта

Скриншот замера скорости ПЕРЕД оптимизацией блога:

Скриншот замера скорости после оптимизации и проведенных ниже рекомендаций.
.

Короткое резюме по ускорению сайта на WordPress

Основное влияние на скорость оказали такие факторы как смена хостинга с использованием SSD дисков, оптимизация изображений, включение плагина кеширования W3 Total Cache, оптимизация БД сайта, удаление старых ревизий, включение сжатия файлов на стороне сервера, включение кеша для статичных файлов на стороне браузера. Далее следует полная развернутая инструкция по ускорению сайта на WordPress.

Полная инструкция как ускорить сайт на WordPress

1. Качественный SSD хостинг, быстрый пинг

Хостинг должен быть на SSD дисках. Желательно чтобы сервера хостинга располагались в вашей географической зоне, на которую ориентирован сайт. Если хостинг будет на SSD, но в США, а ваш блог ориентирован на Россию и страны СНГ, то толку от такого SSD будет мало. Так как будет идти долгий пинг для связи с сервером. Поэтому месторасположение дата центра хостинга также важно. Это важный параметр хостинга — быстрый пинг, отклик серверов. И чтобы хостер не делал оверселлинг услуг. Про тип хостинга — конечно лучше брать как VDS (виртуальный выделенный сервер) с необходимыми для вашего сайта параметрами, вместо обычного shared хостинга. Какую именно конфигурацию VDS выбрать — это зависит от нагрузки которую ваш сайт создает не сервер и от размера его суточной аудитории. Я бы советовал брать минимум 1Gb Ram, 1 ядро процессора и 10 Гб SSD. В начале у меня был VDS на обычных HDD дисках, затем я поменял его на SSD VDS хостинг.

Хостинг «До»:

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

5. Настройка файла.htaccess для снижения нагрузки на сервер.

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

Настройка №1. Часто с сайтов копируют информацию вместе с картинками, не изменяя адреса картинок. И когда такое происходит картинки лежащие на нашем хостинге загружаются на других сайтах, и это создает ненужную нагрузку на хостинг.

Следующим кодом можно запретить загружать изображения нашего сайта на сторонних сайтах:

RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://(.+.)?yandex.ru/.*$ RewriteCond %{HTTP_REFERER} !^http://(.+.)?undsoft.com/.*$ RewriteCond %{HTTP_REFERER} !^http://(.+.)?yandex.net/.*$ RewriteCond %{HTTP_REFERER} !^http://(.+.)?feedburner.com/.*$ RewriteCond %{HTTP_REFERER} !^http://(.+.)?mail.ru/.*$ RewriteCond %{HTTP_REFERER} !^http://(.+.)?poisk.ru/.*$ RewriteCond %{HTTP_REFERER} !^http://(.+.)?yourdomain.ru/.*$ RewriteCond %{HTTP_REFERER} !^$ RewriteRule .*.(jpe?g|gif|bmp|png)$ - [F]

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

Настройка №2. В файле.htaccess можно и следует указать кэширование для некоторых объектов сайта (изображений, css и js фалов) чтобы браузер кешировал их на своей стороне и не загружал их каждый раз. Для этого в.htaccess ниже первого кода добавляем следующий код:

FileETag MTime Size ExpiresActive on ExpiresDefault "access plus 1 year"

Настройка №3. Включим gzip сжатие страниц перед отправкой их пользователю. Вставим в.htaccess следующий код:

mod_gzip_on Yes mod_gzip_dechunk Yes mod_gzip_item_include file .(html?|txt|css|js|php)$ mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime ^text/.* mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_exclude mime ^image/.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*

Настройка №4. Ограничение спама в комментариях. Большинство спам комментариев отправляются автоматически. Этим кодом мы запретим напрямую отсылать комментарии минуя форму комментирования. Теперь спам боты не смогу отправлять комментарии.

RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .wp-comments-post.php* RewriteCond %{HTTP_REFERER} !.*yourdomain.ru.* RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) ^http://%{REMOTE_ADDR}/$

Настройка №5. Если вы пользуетесь системой FeedBurner, то у вас явно установлены плагины, которые отправляют RSS-контент на сайт FeedBurner. Сегодня вы можете их удалить, потому что перенаправить контент можно и без плагинов, уменьшив нагрузку на хостинг.

RewriteEngine on RewriteCond %{HTTP_USER_AGENT} !FeedBurner RewriteCond %{HTTP_USER_AGENT} !FeedValidator RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://yourdomain.ru

ВНИМАНИЕ!!! Не забудьте в примерах выше заменить адрес yourdomain.ru на адрес своего сайта.

6. Оптимизация базы данных

Важное значение в скорости работы сайта имеет База Данных. При сохранении постов по нескольку раз WordPress создает ревизии записи — состояния постов в разные моменты их редактирования. В результате со временем база данных содержит большое количество ненужных ревизий постов, и их необходимо очищать и оптимизировать. Сделать это можно с помощью плагина Optimize DB . Установить его можно из админки WordPress. Например запустив его на своем сайте я удалили более 1200 ревизий постов. Что значительно улучшило скорость работы БД.

7. Оптимизация кода шаблона (темы)

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

Настройка №1. Найти код, который отвечает за стили в файле header.php:

" type="text/css" media="screen" />

Заменить на:

Внимание!!! Не забудьте изменить yoursite.ru на ссылку своего сайта.

Настройка №2. Изменить код пинбеков:

" />

Настройка №3. Изменение кода RSS ленты:

RSS Feed" href="" />

Заменить с исправлением yoursite.ru на свою ссылку:

Настройка №4. Довольно часто в подвале сайта (footer.php), разработчики тем оставляют совершенно ненужные запросы к Базе данных. Например:

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

1) Если ваш сайт не использует комментарии, не стоит их скрывать с помощью плагинов, это создает совершенно ненужную нагрузку. Так как вам комментарии совершенно не нужны, просто удалите следующий код из файла темы (single.php):

2) Старайтесь не использовать внешние скрипты, такие как, комментарии от Вконтакте, различные виджеты социальных сетей. Да, это выглядит красиво и эффектно, но создает приличную нагрузку на сайт. Из примеров могу сказать что мой сайт значительно грузил код веб-визора от ЯндексМетрики, виджет Add.This. Кнопки соц сетей я поменял на отельный JS плагин.

3) Почистите весь код вашего сайта от комментариев, данные комментарии вставляются с помощью тегов и /*код/. Оставьте только нужное, так как сайту приходится тратить лишние силы на их загрузку…

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

5) Все дополнительные коды на подобии счетчика сайта от Live Internet, либо Google Analytics стоит размещать в подвале сайта, что бы они так же как и другие скрипты грузились только в самую последнюю очередь.

8. WordPress плагины — для ускорения скорости загрузки сайта

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

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

2) Деактивируйте ненужные плагины. Постарайтесь использовать как можно меньше Активированных плагинов. Некоторым плагинам не обязательно давать работать постоянно.Например плагин для оптимизации БД можно включать только на период работы с ним.

10. Ускорение сайта с помощью кэширования

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

1) WP Super Cache – лучший и бесплатный плагин для кэширования в WordPress. Рекомендую его установить и использовать. Также хорошие плагины WP Total Cache, WP Rocket.

2) Плагин Autoptimize – рекомендуют использовать вместе с Wp Super Cache. Никаких сверх настроек делать не нужно, просто активируйте плагин, в разделе «Настойки» → «Autoptimize» поставьте галочки, и плагин будет работать. Будьте осторожны, проверьте работоспособность сайта после изменения настроек, что бы предостеречь себя от неприятностей.

3) Плагин WP Widget Cache – позволяет кэшировать виджеты, с чем не справляется плагин Wp Super Cache.

11. Используйте CDN сети для более быстрой загрузки контента

Еще один способ ускорить загрузку сайта — использовать CDN сети, Content Delivery Networks. Каждый раз когда пользователь открывает ваш сайт, он загружает всю информацию с вашего сервера, на котором расположен сайт. Если регион пользователя и регион расположения сервера с вашим сайтом одинаковы, скажем Москва Россия — то все олично. Но если пользователь заходит на Ваш сайт скажем с Азии, или США, то доставка контента к нему уже будет происходить с меньшей скоостью, т.к. тут влияет расстояние. Использование CDN сетей дает возможность загружать файлы вашего сайта (изображения, скрипты, стили) не только с вашего хостинга, а с дата-центров по всему миру. Таким образом заходя на сайт, пользователь автоматически загрузит файлы сайта из наиболее близкой для него точки с серверами CDN сети, что значительно ускорит загрузку сайта.

Можно исюпользовать плагин Jetpack Photon который дает возможность использовать CDN сеть WordPress для загрузки изображений вашего сайта.

Можно использовать другие CDN сети, например MaxCDN, NGENIX или Amazon CloudFront. Я CDN сети не использовал, поэтому в этом пункте ограничися лишь кратким ознакомительным описанием этой технологии.

Подключая свой сайт к CDN сети, все файлы сайта будут загружаться с мощнейших дата-центров по всей планете. Обычно такие услуги платные, стоимость начинается от 9$, и используют их очень популярные сайты с огромной посещаемостью.

Несколько мелочей, которые в также помогут вам ускорить загрузку сайта:

  1. На главной странице сайта выводите только анонсы статей , не нужно выводить полные статьи.
  2. Очень большие статьи разделяйте на страницы с помощью тега .
  3. Не стоит выводить на главной странице больше 5-6 статей.
  4. Не стоит выводить под статьей больше 50 комментариев, пользуйтесь так же переключением страниц между комментариями.
  5. Установите поиск по сайту от Google или Yandex. Сайт будет искать информацию быстрее.

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

План статьи

Для Google, Яндекса и других поисковых систем скорость загрузки сайта является важным фактором ранжирования. Рассмотрим ускорение загрузки и работы сайта на CMS WordPress. Результаты работы можно увидеть в конце поста.

Цель: Ускорить загрузку и работу сайта на CMS WordPress плагинами (без правки кода).

Шаг 1. Анализ текущей ситуации со скоростью загрузки.

Ускорение этого блога я делал еще в феврале 2015 года, поэтому скриншота прошлого состояния не сохранилось. По памяти помню, что сервис PageSpeed Insights показывал скорость загрузки 50/55 для мобильных/ПК. Состояние было плачевное и я задумался про ускорение.

Проанализируйте свой сайт на WordPress с помощью сервиса Google PageSpeed Insights и если результат загрузки сайта меньше 85 — читайте дальше.

Шаг 2. Устанавливаем плагины для ускорения.

WP Fastest Cache

Плагин для кэширования сайта, сжатия файлов, минимизации и объединения css, js, очень широкий функционал. Плагин в нужной комплектации бесплатный.

Зайдите в админке сайта на WP в «Плагины» -> «Добавить новый». Впишите название плагина, нажмите «Поиск». Первый плагин с изображением животного кошачьего типа — наш плагин. Устанавливаем.

EWWW Image Optimizer

Плагин для оптимизации изображений. Сжимает существующие и загружаемые картинки без потери качества.

Зайдите в админке сайта на WP в «Плагины» -> «Добавить новый». Впишите название плагина, нажмите «Поиск». Первый плагин с изображением молотка, который бьет по картинкам — наш плагин. Устанавливаем.

Шаг 3. Настройка ускорения сайта на WordPress

Настроим кеширование и минимизацию css, js файлов. В панели администратора новым пунктом меню у вас появился WP Fastest Cache. Зайдите по ссылке, внизу вы увидите поле language, установите русский язык. Установите галочки во всех пунктах, как на скриншоте ниже. В другие вкладки плагина можете не заходить — там платные функции, за которые вам вряд ли захочется отдавать деньги.

После этого сожмём картинки на сайте. В панели админки WP наведите на медиафайлы, выберите пункт «Оптимизировать». В выбранном окне воспользуйтесь двумя функциями — оптимизацией картинок из библиотеки и оптимизация других картинок (шаблона, движка и т.д.). Этими действиями вы сжимаете уже существующие изображения на сайте, загружаемые после установки плагина картинки будут сжиматься автоматически при загрузке на сервер.

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

Шаг 4. Результаты ускорения сайта.

Результаты шикарные. С 50 сразу стало 81 (опять-таки, по памяти). Почитав рекомендации Гугла нашел множество проблем загрузки, связанной с плагином, который предназначен для красивого вывода программного кода на блоге. После того, как я его снес — это значение поднялось до 91! Вот, что показала Яндекс Метрика — отчет по загрузке страниц:

По скриншоту четко видно, что скорость загрузки страниц снизилась с 1 секунды от 0.1 . Отмечу, что улучшились позиции в Google и даже в Яндексе, уменьшилось число отказов (некоторые люди, особенно с мобильным интернетом, не желают долго ждать и покидают сайт, если после перехода на сайт он сразу не начинает загружаться).

Дополнительно

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

Это заметно снижает скорость загрузки и отношение Google к сайту. Простой пример — в моем блоге на главной вы увидите над лентой последних постов текст и небольшое фото. Если бы я поставил в атрибут src тега img ссылку на изображение оригинал разрешением ~1000×2000 и вывел картинку 100×100, серверу пришлось бы загружать изображение 1000×2000, браузер сжал бы ее до нужных размеров, которые я прописал в стилях отображения, но реально-то загружался оригинал. Поэтому я не поленился отресайзить её в Photoshop и только после этого использовать в шаблоне. Загружайте изображения ровно в таком разрешении, в котором хотите её отобразить.

Меньше графики — быстрее сайт.

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

Меньше плагинов — меньше запросов к базе данных.

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

Если у вас возникли проблемы с ускорением сайта на WordPress или возникли вопросы по теме — пишите в комментарии или на почту через форму слева — постараюсь помочь.

Возможна ли оптимизация WordPress и ускорение простыми методами? Конечно! Несмотря на то, что WordPress по умолчанию легкий и быстрый, его неправильная настройка может сделать многие процессы медленными и чрезвычайно запутанными. Предлагаем обратить внимание на способы, которые помогут ускорить работу веб-сайта .

Согласно последним исследованиям компании Microsoft, время ожидания пользователями загрузок страниц сократилось с 12 секунд до 8 секунд, люди стали более нетерпеливыми. Более того, как показали исследования, 40% пользователей покинут ваш ресурс, если он загружается дольше 3 секунд. Поэтому оптимизация и ускорение WordPress просто необходимо.

1. Оптимизация WordPress и регулярное пополнение собственной базы данных.

WordPress — система управления контентом, основанная на реляционных базах данных. Если база данных большая, то это может привести к замедленной работе интернет-ресурса .

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

  • Ревизия постов: Функция «Ревизия постов » быстро заполняет базу данных, после чего интернет-проект начинает работать медленно. Каждый обновленный пост сохраняется в базе данных. Так база данных заполняется. Данную функцию можно либо отключить совсем, либо ограничить. Чтобы ограничить ревизии, нужно в файл настроек wp-config .php добавить следующие строки:
define("AUTOSAVE_INTERVAL", 300); //секунды define("WP_POST_REVISIONS", 5);

После изменений кода WordPress хранит максимум 5 изменений поста и только 5 минут. В случае необходимости можно снова включить функцию «Ревизия постов».

  • Если нет желания менять код для файла wp-config .php, можно установить плагин — Revision Control или плагин для удаления ревизии постов— WP Clean Up . Тогда оптимизированный WordPress автоматически начнет управлять ревизиями постов. Более подробно как установить и управлять можно .
  • Ссылки на блог и трекбэки : ссылки на блог и трекбэки также могут заполнить базу данных. Их тоже можно отключить. Это можно сделать так: Настройки/Обсуждение/Разрешить оповещения с других блогов(уведомления и обратные ссылки) на новые статьи
  • Комментарии в блоге : Комментарии в блоге — это совсем не плохо, но только если это не тысячи спам-комментариев , которые занимают место в базе данных. Обязательно нужно регулярно удалять такие комментарии, чтобы не «засорять» базу данных.
  • Плагины. Некоторые плагины собирают данные и загружают их в базу данных. Сначала они кажутся полезными, но на самом деле просто занимают много места. Например, один плагин может использовать до 160 мб. пространства базы данных. Это только один плагин! А если их несколько?
  • Аналитика и регистрации. С осторожностью нужно относиться к плагинам, которые анализируют историю и регистрацию данных на веб-проекте . В основном они используют большой объем базы данных, что может привести к медленной работе страницы и ухудшит оптимизацию WordPress.
  • Можно установить плагин WP-Cleanup и использовать его для чистки и оптимизации базы данных.
2. Оптимизация изображений в Wordpress.

От размера картинок зависит время его загрузки на странице. Это происходит, когда нужно загрузить картинку большого разрешения, или, когда фотография публикуется в статьях и затем отображается на домашней странице.

Существует 2 способа оптимизации собственных картинок:

· регулярно оптимизировать и уменьшать размер фотографий; это можно делать без ухудшения качества фото;

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

Кстати если у вас большое количество изображений, можете воспользоваться кодом купона скидки для платного режима и скидкой 5%, копируйте код dSAdDeN2xj7_Nr9B1LH68MoyeuJxMeUY

· задерживать загрузку картинок; этот способ используется, когда фотография не загружаются, пока читатель прокручивает окно, где есть это фото. Данный способ позволят избежать проблем при загрузке веб-сайта . Для этого можно использовать различные плагины, например Lazy Load и аналогичные ему с похожим названием.

Оптимизация картинки позволяет его уменьшить с размера в 2 мб. до 600 кб. без ухудшения качества. Это делается с целью удаления ненужных фрагментов изображения. Фото можно оптимизировать в блоге на WordPress с помощью установленных специальных плагинов.

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

3. Использование кэша и удаление заголовков.

Большинство веб-ресурсов на WordPress могли быть вдвое быстрее, если бы использовали кэширование.

Опитизация WordPress за счет кэширования основано на хранении файлов веб-ресурса в кэше браузера посетителя или готовых страниц на сервере, то есть автоматически сохраняет в фаил кэша страницу, периодически, когда посетитель заходит на сайт. Обычно, если настройки кэш не изменены, то кэш браузера посетителя будет обновляться, когда обновляется веб-проект , тем самым гарантируя, что ничего не потеряется.

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

Кэширование позволяет заметно увеличить скорость работы вашего блога. Было установлено, что возможность полного кэширования может ускорять работу блога на WordPress от 2.4 секунды до 900 миллисекунд.

После включения кэширования, можно также включить модуль истечения времени заголовков, это модуль http сервера Apache mod_expires . Эта оптимизация позволит увеличить скорость работы WordPress, оповестив браузеры посетителей, когда запрашивать определенные файлы с сервера. И засталя его хранить файлы в браузере пользователя нужное время. Модуль mod_expires может сэкономить ресурсы сервера и значительно увеличить скорость открытия страницы. Подробно какие писать записи в.htaccess для активации модуля и правильной его настройки, читайте в статье " ". У нас на хостинге , этот модуль включен по умолчанию для всех веб-сайтов . Тем самым уже изначально улучшая их оптимизацию.

4. Включение GZIP Compression через mod_deflate .

Какой самый популярный инструмент для сжатия файлов к формату Zip на компьютере? 7-Zip? WinRar? Многим приходилось сжимать файлы и наблюдать удивительную эффективность, когда файл размером от 200 Мб уменьшается до размера в 40 Мб? Как это происходит? Разве невозможны подобным образом технологические сжатия? Все возможно, можно сделать так и для блога, и тем самым обеспечить его быструю работу и отличную оптимизацию.

GZIP Compression помогает сжимать файлы страницы в формат Zip, и передавать целиком посетителям, за счет этого достигается оптимизация скорости загрузки. Для этого используется модуль http сервера Apache mod_deflate . Другими словами, посещаемость интернет-страницы та же, но сам блог работает быстро, так как посетителей обслуживает сжатая версия.

Мы проверили веб-ресурс, который был сжат с помощью GZIP Compression от 68 кб до 13 кб, Worpress ускорил свою загрузку в 5 раз.

Как запустить и настроить этот модуль на хорошем хостинге , такой как наш, описано в статье " ".

5. Использование CDN .

Существуют исследования, показывающие, что CDN может увеличить производительность блога на 60%.

Скорость загрузки контента страницы зависит от того, где размещен хостинг, на котором располагается веб-проект . Например, если хостинг размещен в Индии, а вход происходит, например, из США, то сайт будет грузиться медленнее, чем если бы это происходило бы в Индии. Как выйти из такой ситуации? Люди с ограниченной скоростью доступа в интернет, для ускорения загрузки сайта могут воспользоваться сервисом CDN.

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

6. Оптимизация и изменение темы WordPress.

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

7. Объединение заднего фона изображения с перемещаемым спрайтом.

Тема WordPress основана на картинке заднего фона, в соединении с командами CSS, преимущественно, дисплей — это чистый задний фон. Так один красивый задний фон может состоять из 12 различных задних фонов. Внешне это выглядит нормально и просто, пока эти 12 фонов используются как 12 разных запросов к серверу от браузера посетителя. А что, если эти 12 прорисовок объединить в одно? Тогда скорость резко возрастет.

При объединении заднего фона со спрайтом, можно разные темы заднего фона изображения объединить в одно и потом, используя CSS получить обычный дисплей страницы. Это уменьшит общее количеств байт, необходимых для загрузки браузерами пользователей, которые вызывали задержку. Результат — более быстрый блог и хорошая оптимизация.

8. Использование только несинхронных вызовов для кодов JavaScript.

Замечали, что при зависании Facebook, остальные веб-ресурсы начинают работать заметно медленнее? Что интересно, этого не происходит, когда загружаются коды Facebook. Подобное случается, когда используются синхронные коды с других сайтов — особенно аналитики или трекинг. Если код установлен синхронно на WordPress, сначала загружается он — в зависимости от части кода — перед загрузкой других элементов сайта.

При использовании только несинхронной подачи кодов JavaScpipt, гарантировано, что блог функционирует должным образом и быстро независимо от того, какой сервер кодов JavaScript используется на веб-проекте .

Подробно, что это такое, можно .

9. Включить HTTP Keep-Alive .

Эта настройка возможна, если у вас есть доступ к конфигурации http сервера. В остальных случаях рекомендую использовать нормальных хостинг .

У нас поддержка Keep-Alive включена для всех клиентов бесплатно!

Обычно когда посетитель запрашивает файл с сервера, каждый файл посылается индивидуально. Проблема в этом случае состоит в том, что открывается новая связь для каждого файла, что итоге приводит к медленной работе блога, в зависимости от того сколько людей одновременно посещают веб-ресурс . Включив HTTP Keep-Alive , браузерам посетителей поставляются все файлы через одну связь. Связь открыта до тех пор пока все файлы не получены. Таким образом количество открытых связей на сервере сокращается, тем самым приводя к увеличению скорости работы сайта.

10. Использование лучшего хоста.

Если хост плохой, то советы, представленные в этой статье, не будут иметь большого значения. В таких условиях оптимизация сложна. При регулярном анализе и исследовании веб-хостов замечено, что в 2 случаях из 10, если конфигурация сервера плохая, то ничего для увеличения скорости работы портала сделать нельзя.

В одном журнале были описаны случаи, показывающие как сильно веб-хост влияет на длительность загрузки интернет-страницы . Программист сравнил скорости работы блогов двух клиентов, один из которых пользовался выделенным сервером, второй — общим. Результат был ошеломляющим: время отклика веб-ресурса на запросы на выделенном сервере составило 7 мс, в то время как время отклика сайта на общем сервере — целых 250 мс.

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

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