Удачный эксперимент: как я ускорил WordPress на shared-хостинге

Bogdan Gerasymenko
WebStore
Published in
6 min readNov 30, 2018

--

Хочу поделиться личным опытом по ускорению сайтов написанных на WordPress – самой популярной в мире CMS. Статья рассчитана на продвинутых пользователей.

Результаты проведённого мною эксперимента показали, что в 2018 году ключевую роль в SEO оптимизации сайта играют лишь два фактора: скорость загрузки и наличие битых ссылок.

Проверить показатели своего сайта и выявить проблемные места можно с помощью утилиты GTmetrix. К примеру, вот так выглядит “больной” сайт на WordPress (сайт местного интернет СМИ):

Скриншот способный вызвать инфаркт у СЕОшников

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

  1. Настройка кэширования.
  2. Переход на CloudFlare.
  3. Побег с shared-хостинга.

WordPress: плюсы и минусы

Большинство моих сайтов созданы на WordPress – одной из самых популярных CMS (32% всех сайтов в мире). Он удобен: позволяет создавать сайты в считанные дни, под него написано много готовых решений, но есть один огромный недостаток – он очень ресурсоёмный.

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

К примеру, наш интернет-магазин на 1500 товаров занимает 1.47 ГБ места на диске (33915 inode), а база данных весит 118 МБ (после удаления старых заказов – 40 МБ). Про запросы к серверу я вообще молчу – около 12762 к Apache и 23060 на Nginx. В среднем, 120 запросов к базе данных. И это при том, что у нас самописная тема на чистом Bootstrap без лишних запросов и подключений.

Google Тренды: Magento на первом месте

Здесь следует отметить, что аналогичный сайт на OpenCart весил бы в два раза меньше, а база данных не превышала бы 4–5 МБ! Но, мы ушли с OpenCart и прочих CMS потому, что они не отвечали нашим минимальным запросам: расширяемости и наличию готовых решений (про API в ядре я вообще молчу!).

В плане разработки WordPress просто идеален. Его используют Time, Fortune, TED, Quartz. Это единственная CMS у которой изначально есть полноценное API.

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

Настройка кэширования: панацея от всех бед

Использовать кэширование советуют сами создатели WordPress. Для этого они создали бесплатный плагин WP Super Cache. Можно использовать в связке с Autoptimize, но это не решит всех проблем.

Поэтому мы перешли на платный WP-Rocket. Он и кэширует, и сжимает, и даже работает с CDN и кэшами Cloudflare, Varnish, OpCache. В общем, настоящий комбайн. Главное, правильно всё настроить. К счастью, там настолько понятный интерфейс, что сделать шкоды неопытному юзеру просто не получится (в отличии от двух первых плагинов).

После сжатия и объединения скриптов (пишут, что для HTTP/2 это не нужно, но мы рискнули и выиграли) вес страницы уменьшился, а сайт стал грузиться быстрее. Разумеется, важны и критические CSS, асинхронный JS, кэширование – но, это уже детали. Здесь важно понять одну истину:

Быстрее всего грузится сайт на чистом HTML. Как во времена нашей молодости.

Сделать полную HTML копию сайта на WordPress можно, но как вы её будете обновлять? Кэширование здесь действительно решает всё. По сути, оно тоже создает статические страницы и загружает их вместо сотни запросов к базе данных и генерации на лету.

Переход на CloudFlare: безупречная защита

Оптимизировать сайт с помощью одного плагина – звучит как в сказке, а следовательно, абсурдно и практически не реально. Так и есть. Поэтому, вторым этапом был переход на CDN.

Здесь всё просто: есть платные и бесплатные решения. Очень удивило, что бесплатное решение от CloudFlare оказалось настолько жизнеспособным, что просто грех ним не воспользоваться.

CloudFlare и подобные CDN не только ускоряют сайт, но и защищают его от DDos-аттак

Если в кратце, CDN помогают ускорить сайт за счет загрузки файлов с ближайшей точки. К примеру, если ты с Украины, файлы грузятся с Киева, если с Австралии – то с одного из 4 ближайших городов: Брисбен, Мельбурн, Сидней, Перт. Всего 155 дата-центров по всему миру и их количество постоянно растёт.

Дата-центры Cloudflare по состоянию на декабрь 2018 года

А так как CloudFlare выступает и DNS сервером, он предлагает защиту сайта не хуже, чем у Google или Microsoft. И это всё, на минуточку, в бесплатном тарифе!

Переход на сервера CloudFlare очень отразился на оптимизации сайта. Собственно, уже на этом этапе мы имели показали в районе 89–91% в тестах PageSpeed и YSlow.

Осталось поработать над оптимизацией фото и по возможности отказаться от сторонних скриптов (использовать локальный Gtag).

Смена хостинга: источник всех бед?

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

Мы около пяти лет пользуемся услугами ukraine.com.ua и достигли уровня платинового пользователя (30% скидки на всё). Буквально со вчерашнего дня у них появился бизнес-хостинг. Это некий гибрид shared-хостинга с VPS. То есть мощности выделенного сервера, но уже с предустановленной “фирменной” панелью управления и всеми настройками.

Переход с shared-хостинга на VPS дал значительный скачек скорости. Это можно сравнить с заменой старого ноутбука на новый мощный компьютер. В частности, переход позволил решить две основные проблемы: повышенную нагрузку на сервер и нехватку места (долбанных inode).

Теперь у нас есть 2 ГБ ОЗУ, которую можно самостоятельно распределять между OPcache и Memcache. Как показала практика, в среднем для одного WordPress сайта достаточно до 64 МБ OPcache.

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

Выводы

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

Идея создать интернет-магазин на основе WordPress (WooCommerce) возникла не случайно: до этого мы пользовались PrestaShop, в настройках которого можно сломать ногу и даже не одну, OpenCart под который вообще нет никаких плагинов, а те что есть стоят хороших денег и даже Joomla в админке которой смогут разобраться только хакеры. WooCommerce с её хуками и API стало настоящим спасением.

Как вариант – использование дорогих специализированных хостингов или VPS. Либо, как в моём случае, кропотливая оптимизация всех процессов: от сжатия изображений, скриптов и стилей до подключения кэширования и CDN. Результат подобных манипуляций на лицо – скорость загрузки сайта увеличилась с 2 сек до 0.21 мс, а показатели метрик достигли практически 100% оптимизации для некоторых страниц.

Это конечно не показатели чистого HTML или шустрого самописного фреймворка по типу LiveStreet, но и не кошмар на улице Вязов.

--

--