MC.today: адаптація WordPress вебсайту для витримки великого навантаження
MC.today — онлайн медіа видання про маркетинг в Україні. Видання для тих, хто хоче бути активним та креативним. А також, для людей яких цікавить інноваційний бізнес, розвиток та сучасний стиль життя.
Місія і мета MC. today
MC.today хочуть допомогти українцям жити в країні, де люди захоплені своєю справою, ставлять перед собою цілі та досягають їх, мислять творчо і бачать склянку, яка наполовину повна, а не наполовину порожня. Які отримують задоволення від життя, але не марнують його. Своєю роботою вони змінюють світ на краще і точно знають, що неможливе можливе. MC. today бажають, щоб українці стали найактивнішою, підприємливою, задоволеною життям і успішною нацією у світі. Тому вони підтримують їх на цьому шляху: надихають прикладами успіху, попереджають про помилки, підказують нові шляхи та допомагають сходити на наступний рівень розвитку.
Проблема
Поки MC. today мав до 500 тисяч користувачів на місяць, стандартна конфігурація WordPress досить успішно справлялась, але вище цього порогу почала зростати кількість проблем. Сайт міг на деякий час «падати» під навантаженням, а випуск статей ускладнився, оскільки може бути недоступною навіть панель адміністратора. Стало зрозуміло, що CMS необхідно оптимізувати.
Завдання
Нам треба було зрозуміти основні завади у роботі WordPress, які недозволяють вебсайту оптимально функціонувати під більшим навантаженням. Провести аудит й впровадити покращення для підвищення стабільності і надійності роботи онлайн-медіа видання.
Процес
Ось які проблеми з WordPress на MC. today ми виявили в SOLAR Digital і як їх виправляли:
Статистика
На MC. today для підрахунку переглядів статтей використовувався плагін Slimstat Analytic. Але крім даних про відвідування сторінки користувачем, він збирав велику кількість непотрібної інформації: час сесії, тип пристрою, тривалість перегляду тощо. Уся ця надлишкова інформація зберігалась в головній базі даних сайту, займаючи 1,5 Гб місця. Це не тільки уповільнювало роботу в адміністраторській панелі редакції, але й «гальмувало» відображення сайту в браузерах відвідувачів.
Для вирішення проблеми розробники видалили встановлений плагін, а замість нього підключили зовнішню програму власної розробки, написану на мові PHP та фреймворку Laravel. Вона підраховує перегляди, записуючи дані на окремий хостинг-сервер. При цьому опитування лічильника відбувається безпосередньо в браузерах відвідувачів сайту, повністю звільняючи від навантаження двіжок WordPress, який раніше самостійно враховував відвідування. За таким же принципом був розроблений рейтинг блогерів.
Кешування
Стандартну систему кешування було замінено на прогресивну. Для цього встановили пакет W3 Total Cache + Memcached.
W3 Total Cache — один з найкращих на сьогодні плагінів, що забезпечують оптимізацію ресурсів (кешування сторінок, об'єктів, даних тощо) як на стороні сервера, так і на стороні клієнта (браузера).
Memcached — спеціальний сервіс, який кешує дані у свою оперативну пам’ять (сховище на основі хеш-таблиці) обійшовши базу даних сервера. Після його підключення сторінки, завантажені в кеш сервісу, почнуть завантажуватися помітно швидше. Якщо ж сторінка ще не запитувалась і її немає в кеші, то Memcached швидко вносить її в базу, щоб так само швидко віддати її користувачеві при наступному запиті.
Хостинг-сервер
База даних сайту сповільнювала веб-сервер, коли вона була разміщена разом з ним на одному комп’ютері. Її перенесли на фізично відокремлений від веб-сервера комп’ютер, що позитивно позначилося на швидкості завантаження.
Продуктивність за Google PageSpeed
Швидкість завантаження сторінок є важливою не тільки для користувацького досвіду, але і для ранжування в пошукових системах. Ось що було зроблено для оптимізації швидкості завантаження:
- мініфікація та конкатенація коду, видалення зайвих файлів стилів та скриптів;
- рівномірне розподілення навантаження веб-сторінки за рахунок фонового завантаження зображень під час прокручування сторінки;
- оптимізація розміру завантажуваних зображень.
Відсутність CDN-сервісу
Встановили CloudFlare — CDN-сервіс, який аналізує налаштування сайту та зменшує кількість запитів до сервера. Він дозволяє автоматично кешувати більшість статичних ресурсів (CSS-файли, скрипти JavaScript, зображення) та захищає ресурс від DDoS-атак. А ще стискає зображення та використовує при роботі прогресивні формати зображень (наприклад, WebP).
Непотрібні для роботи сайту плагіни
Ми вилучили всі непотрібні для сайту плагіниі, а всю функціональність реалізували на власному коді, що працює помітно швидше.
Застаріла версія WordPress
Ми оновили застарілу версію WordPress для виправлення проблемних місць та вразливостей, які були в старих версіях. А ще встановили останню версію PHP 8.3, яка працює значно стабільніше.
Рекомендації для створення сайту на WordPress від Solar Digital
Ось деякі загальні поради, доступні для впровадження майже кожному, включаючи новачків у роботі з WordPress:
- Будь-якому розробнику на WordPress необхідно детально вивчити кодекс CMS. Якщо ви хочете дружити з WordPress, без кодексу важко обійтися.
- Налаштуйте кешування. Ретельне його розуміння важливо, для того, щоб не змушувати користувача нервувати через довге очікування завантаження сторінки. Кешування може бути різним, вивчайте та вибирайте найбільш підходящий саме для вас.
- Встановлюйте шаблони та плагіни розумно. Не перевантажуйте функціональністю ресурс, і він буде стабільно працювати ще довгий час.
- Не забувайте оновлювати WordPress та PHP. Пам’ятайте про безпеку та постійно з’являються нові вразливості системи.
- Зробіть сайт більш помітним для пошукових систем, використовуючи SEO-friendly концепцію.
Типові слабкі місця WordPress
Безпека
WordPress — платформа з відкритим вихідним кодом, що привертає хакерів з усього світу. Вони знаходять вразливості в системі та використовують їх для шкідливих дій (спам, зомбі-мережі, фішинг, SEO-маніпуляції тощо). Рішення — систематичне оновлення WordPress та його плагінів, оскільки при кожному з них розробники намагаються виправити всі знайдені вразливості.
Код
PHP-код WordPress іноді називають застарілим, але з ним можна ефективно працювати, якщо вивчити кодекс WordPress, про який вже згадувалося вище. Якщо йому слідувати, то проблемних ситуацій бути не повинно.
Таксономії
Таксономії — атрибути записів на сайті. Це властивості товарів, постів або іншого контенту на вашому ресурсі. Таксономії прив’язуються до запису в одній таблиці, і щоб переглянути значення певного атрибута, система перебирає всю таблицю повністю. Якщо у вас на сайті два десятки записів — проблем не виникне. Але якщо позицій 25 000, і у кожної по 50 атрибутів — то це в сумі 1 250 000 таксономій. Це негативно впливає на продуктивність — і ось тут лежить основна обмеженість використання WordPress на великих сайтах (наприклад, у вас онлайн-магазин, в якому 25 000 товарів з різними властивостями).
Занадто багато плагінів та шаблонів
Дійсно, встановлення занадто багато плагінів та шаблонів може стати проблемою для швидкості та продуктивності сайту на WordPress. Кожен плагін або шаблон збільшує кількість запитів на сервер, що може спричинити збій у роботі сайту або знизити швидкість його завантаження. Крім того, деякі плагіни можуть бути несумісними з іншими плагінами або шаблонами, що може призвести до проблем з функціональністю сайту. Тому перед встановленням будь-якого плагіну або шаблону, варто переконатися в його необхідності та сумісності з іншими елементами сайту.
Кінцевий результат
Зворотній зв’язок від користувачів дозволив нам виявити та вирішити деякі проблеми, які заважали нормальній роботі сайту. Ми звернули увагу на кілька проблемних моментів, включаючи безпеку, обробку та запити до бази даних, таксономії та перевантаження шаблонів та плагінів.
Для вирішення цих проблем ми використали наступні стратегії: систематичне оновлення WordPress та його плагінів, оптимізація запитів до бази даних та кешування даних, реорганізація таксономії, видалення зайвих плагінів та шаблонів, а також перехід на хостинг з високою швидкістю та надійністю.
У результаті впровадження цих стратегій, сайт працює дуже добре та має високу продуктивність, здатний обробляти більше 1 мільйона користувачів щомісяця без проблем. Ми продовжуємо вдосконалювати та оптимізувати сайт, щоб забезпечити його найкращою продуктивністю та відповідністю потребам користувачів.
Статистика
7
великих помилок знайдено
2
спеціаліста
1
мільйон користувачів
340
годин