Як оптимізувати сайт на WordPress: W3 Total Cache

wordpress logoОптимізація сайтів на WordPress є ключовим фактором як для зручності користувачів, так і для просування сайту в пошукових системах. Швидкість завантаження сторінок безпосередньо впливає на поведінку відвідувачів: повільні сайти частіше покидають, вони нижче ранжуються в пошукових системах. Важливу роль у роботі сайту відіграє і вибір хостингу, але купуючи швидкий хостинг на NVMe/SSD дисках, це не гарантує автоматично вискокої швидкості роботи вашого WordPress-сайту.
Оптимізацію роботи сайтів на WordPress ми вже розглядали у статті “Як прискорити сайт на WordPress“, де, зокрема, згадувалося кешування яке є однією з найефективніших технік оптимізації . Кешування дозволяє уникнути зайвих запитів до бази даних і значно скоротити час відповіді сервера. Для реалізації кешування можуть застосовуватись як внутрішні механізми, так і зовнішні рішення.
Не менш важливим є оптимізація фронтенду — зменшення розміру та кількості ресурсів, які завантажує браузер. Стиснення зображень, мінімізація CSS і JavaScript, а також використання сучасних форматів даних дозволяють зменшити загальний розмір сторінки і значно прискорити швидкість відображення сайту. Додатково застосовується CDN, наприклад Cloudflare, що допомагає доставляти контент користувачам із найближчих серверів.

 W3 Total Cache що це таке ?

W3 Total Cache – це один з найпопулірніших плагінів оптимізації роботи сайтів на WordPress. Він є одним із найпотужніших інструментів для оптимізації швидкості роботи сайтів на WordPress. У сучасних умовах, коли користувачі очікують миттєвого завантаження сторінок, а пошукові системи враховують швидкість як важливий фактор ранжування, ефективне кешування стає не просто опцією, а необхідністю. Саме тому W3 Total Cache широко використовується як власниками невеликих блогів, так і розробниками великих вебпроєктів.

Основна ідея плагіна полягає в тому, щоб зменшити навантаження на сервер і скоротити час обробки запитів. Це досягається за допомогою кешування сторінок, бази даних та об’єктів, а також оптимізації статичних ресурсів. Наприклад, плагін може зберігати готові HTML-версії сторінок і віддавати їх користувачам без повторної обробки PHP, що суттєво пришвидшує роботу сайту. Крім того, він дозволяє мінімізувати та об’єднувати CSS і JavaScript файли, що зменшує кількість запитів до сервера.

Ще однією важливою перевагою є підтримка CDN (Content Delivery Network), що дозволяє розподіляти контент через глобальну мережу серверів і забезпечувати швидке завантаження сайту незалежно від географічного розташування користувача. Водночас варто зазначити, що через велику кількість налаштувань плагін може здатися складним для новачків, і неправильна конфігурація іноді призводить до зворотного ефекту. Ознайомитись з повним набором можливостей які надає плагін ви можете на офіційній сторінці W3 Total Cache.

Тестування сайту

Перш ніж переходити до встановлення необхідних компонентів та оптимізації, проведемо тестування сайту, щоб оцінити швидкість роботи без будь-яких покращень. Після виконання базової оптимізації виконаємо повторний тест. Це дозволить наочно порівняти результати та визначити ефект змін. Зазначимо, що тестовий сайт розміщений на віртуальному хостингу з NVMe/SSD-накопичувачами.

Умови тестування:

Тестування виконуватиметься за допомогою утиліти Apache Benchmark, яка генеруватиме 10 одночасних запитів до сайту. Тест триватиме доти, доки загальна кількість оброблених запитів не досягне 1000.

Приклад команди: ab -c 10 -n 1000 https://domain.com.ua/wp/

Результати тесту:

Server Software:       Apache
Server Hostname:       domain.com.ua
Server Port:           443
SSL/TLS Protocol:      TLSv1.3,TLS_AES_256_GCM_SHA384,2048,256
Server Temp Key:       X25519 253 bits
TLS Server Name:       domain.com.ua

Document Path:         /wp/
Document Length:       84330 bytes

Concurrency Level:     10
Time taken for tests:  40.458 seconds
Complete requests:     1000
Failed requests:       0
Total transferred:     84906000 bytes
HTML transferred:      84330000 bytes
Requests per second:   24.72 [#/sec] (mean)
Time per request:      404.579 [ms] (mean)
Time per request:      40.458 [ms] (mean, across all concurrent requests)
Transfer rate:         2049.44 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        2    5   6.9      3     101
Processing:   173  397  73.2    394     836
Waiting:      158  387  69.5    388     765
Total:        176  402  74.4    398     839

Тривалість тесту: 41 секунда.
Швидкіть обробки запитів: 24.72 запити/секунду
Середній час на запит: 404 мс

Попередня підготовка та тести

Активуємо PHP розширення

Фактично WordPress це набір PHP-скриптів кожен з яких виконує певну задачу. Щоб прискорити виконання цих скриптів і забезпечити швидшу обробку даних, з якими оперує  сайт, нам знадобляться деякі PHP-розширення. Такими розширеннями є APCu та OPCache. Додатково, нам знадобиться розширення brotli щоб зменшити розмір сторінок і прискорити їхнє завантаження.

Активуйте PHP розширення “apcu”, “opcache” та “brotli” для версії PHP яку використовує ваш сайт. На серверах з CloudLinux та панеллю керування cPanel це робиться через “Вибір версії PHP” / “Select PHP version” на сторінці “Розширення” / “Extensions”.

Якщо ви користуєтесь послугами шаред-хостингу від компанії “Домени та хостинг” ви можете ознайомитись з саттеєю “Як підключити або відключити PHP розширення в cPanel ?” для більш детальних інструкій.

Встановлюємо плагін W3 Total Cache

1. В лівій бічній панелі WordPress натисніть на “Плагіни”, а потім на “Додати плагін”;
2. В центральній частині, поряд з “Шукати плагіни” введіть “w3 total cache” і зачекайте деякий час, поки WordPress шукає плагіни які відповідають вашому запиту;
3. Коли вікно оновиться, знайдіть плагін “W3 Total Cache” серед отриманих результатів та натисніть на “Встановити зараз” поряд з ним;
4. Зачекайте деякий час поки WordPress встановлює плагін.
5. Активуйте плагін натиснувши на кнопку “Активувати”

Налаштування плагіну W3 Total Cache

Після встановлення плагіну, в лівому вертикальнмоу меню з’явиться новий розділ з назвою “Performance”, це і є розділ в якому налаштовується плагін W3 Total cache.

Натисніть на “Performance” в лівому вертикальному меню, а потім перейдіть до “General Settings”, щоб відкрити вікно з базовими налаштуваннями плагіна.

Ви одразу побачите меню наведене на малюнку нижче.

Кожен пункт цього меню переносить до відповідного розділу налаштувань в “General Settings”. Також тут знаходяться дві кнопку “Empty All Caches” (“Очистити всі кеші”), якщо натиснути на стрілочку “вниз” цієї кнопки, з’явиться опція “Empty OpCode cache” (“Очиста OpCache”). Праворуч знаходиться кнопка “Save Settings” (“Зберегти налаштування”), а натиснувни стрілочку “вниз” поряд з кнопокаю, з’являється опція “Save Settings & Purge Caches” (“Зберегти налаштування та очистити кеші”).

Якщо ви уважно порівняєте меню в “General Settings” з пунктами меню “Performance” в лівій бічній панелі, ви побачите що частина з них мають однакові назви. Незважаючи на це, однакові пункти меню відкривають різні налаштування.

Опція “Попереднього перегляду”

Preview mode  вмикає режим “попереднього перегляду” для тестування роботи сайту, що дозволяє змінювати налаштування плагіну і тестувати роботу сайту до фактичного розгортання налаштувань плагіну на сайті. Режим “попереднього перегляду” залишається активним навіть після розгортання налаштувань, доки ви не вимкните опцію. Цей режим стає у нагоді для тестування роботи сайту після зміни налаштувань плагіну.

Проскрольте екран вниз до “Page Cache”.

Активуємо кешування сторінок

Активуйте кешування, для цього:
Навпроти “Page Cache” встановіть галочку поряд з “Enable”;
Навпроти “Page Cache Method” з випадаючого меню оберіть “Disk: Enhanced”.
як продемонстровано на малюнку нижче:


Важливо: цей тип кешу збільшує кількість файлів в вашому аккаунті т.я. плагін створює статичну копію кожної сторінки сайту. Використаного дискового простору залежить від кількості сторінок на вашому сайті та об’єму кожної сторінки.

Активуємо “мініфікацю”

“Minify” або “Мініфікація” дозволяє зменшити розмір HTML, CSS та JS файлів видаляючи з них пробіли, різні коментарі, але ця функція також може пошкодити ваш сайт. Налаштуйте цей розділ таким чином:
Minify: Поставте галочку поряд з “Enable”;
Minify Mode: Auto
Minify Cache Method: Disk – в документації плагіна вказано, що треба використовувати саме цей метод кешування
HTML Minifier: Minify (default)
JS Minifier: Jsmin (default)
CSS Minifier: Minify (default)

Важливо: режим “Auto” може зламати ваш сайт. В разі проблем з сайтом відключіть мініфікацію, очистіть кеш і перевірте роботу сайта повторно. Якщо проблема зникне, активуйте мініфікацію, переключіть режим на “Manual” та додайте файли або сторінки до яких “Мініфікація” не має застосовуватись перейшовши до вкладинки “Advanced Settings”)  заповнивши поля “Never minify the following pages”, “Never minify the following JS files”, “Never minify the following CSS files”.

Активуємо кешування оперційного коду

Раніше ми активували PHP розширення “opcache”, тому цей тип кешу буде активовано автоматично (поряд з “Enable” стоїть галочка, але опцію неможливо деактивувати або активувати, якщо розширення opcache не додано до PHP).
Розділ має мати такий вигляд:


Переконайтесь, що в полі поряд з “Opcode cache” обрано “Opcode: Zend Opcache”.

Активуємо кешування бази даних

Встановіть галочку навпроти “Database Cache” поряд з “Enable”
В полі “Database Cache Method” оберіть “Opcode: Alternative PHP Cache (APC/APCu)”

Активуємо кешування об’єктів

Object Cache кешує часто використовувані запити до бази даних та складні структури даних, зменшуючи необхідність їх багаторазового отримання з бази даних.

Для активації Object Cache:
Навпроти “Object Cache” встановіть галочку поряд з “Enable”;
Навпроти “Object Cache Method” з випадаючого меню оберіть “Opcode: Alternative PHP Cache (APC/APCu)”.

Активуємо кешування браузером

Ця опція “інструктує” браузер користувача, який відвідує ваш сайт, зберігати статичні елементи сайту (картинки, css, js файли) на компьютері користувача, а коли користувач відвудує сайт повторно отримувати такі статичні елементи з кешу. Це значно зменшує кількіть запитів до сайту, об’єм даних які передаютсья від сайта до користувача і т.д. що значно зменшує час відображення сторінки.

Активуйте опцію встановвів

Розділи “Purge via WP Cron”, “CDN”, “Reverse Proxy”

Пропускаємо, ніяких змін не вносимо.

Розділ “User Experience”

Активуємо опцію “Lazy Load Images”
Активуємо опцію “Disable Emoji” якщо ви не використовуєте Emoji. Вона відключить відображення Emoji.

Розділ “Licensing”

В полі “License” вкажіть ваш номер ліцензії W3 Total Cache якщо ви придбали ліцензію, це розблокуэ “Преміум” опції.

Розділ “Miscellaneous”

“Verify rewrite rules” – увімкніть опцію.
“Enable File Locking” – залиште вимкненою.
“Optimize disk enhanced page and Minify disk caching for NFS” – залиште вимкненою.
“Fix document root path” – залиште вимкненою.
“Anonymously track usage to improve product quality” – залиште вимкненою т.я. ативація цієї опції трохи сповільнить ваш сайт.
“Debug mode” – має бути завжти вимкненою, окрім випадків, коли вам необхідно діагностувати проблеми в роботі сайту.

Базові налаштування W3 Total Cache завершено і необхідно зберегти налаштування натиснувши на кнопку “Save Settings”.

Повторне тестування.

На початку статті ми вже виконали тестування сайту до налаштування оптимізацій. Після внесення змін проведемо той самий тест. Це дозволить порівняти результати та оцінити ефективність виконаної оптимізації.

Результати тесту після оптимізації:

Server Software:        Apache
Server Hostname:        domain.com.ua
Server Port:            443
SSL/TLS Protocol:       TLSv1.3,TLS_AES_256_GCM_SHA384,2048,256
Server Temp Key:        X25519 253 bits
TLS Server Name:        domain.com.ua

Document Path:          /wp/
Document Length:        82208 bytes

Concurrency Level:      10
Time taken for tests:   0.969 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      82585000 bytes
HTML transferred:       82208000 bytes
Requests per second:    1031.79 [#/sec] (mean)
Time per request:       9.692 [ms] (mean)
Time per request:       0.969 [ms] (mean, across all concurrent requests)
Transfer rate:          83213.56 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        2    4   2.2      3      25
Processing:     3    6   3.1      5      36
Waiting:        2    3   2.0      3      28
Total:          5   10   4.0      8      39

Як можна побачити порівнявши результатів тестів виконаних перед та після базової оптимізації, швидкість роботи сайту зросла приблизно в 40 разів.
Тривалість тесту була 41 секунда стала 1 секунда.
Швидкість обробки запитів була 24.72 запити/секунду, стала 1031.79 запити/секунду
Середній час на запит був 404 мс, став 9.7 мс.

Звичайно, результати оптимізації можуть суттєво відрізнятися для вашого сайту, оскільки на кінцевий результат впливає багато факторів. Наприклад, кількість і тип встановлених плагінів, складність та налаштування теми, а також обсяг і структура контенту на сторінках. Тому навіть застосувавши однакові методики оптимізації, ваш сайт може показувати інші показники порівняно з прикладами наведеними в статті, але варто знати, що подібні техніки оптимізації сайту необхідно використовувати не залежно від того чи розміщується ваш сайт на NVMe/SSD хостингу, VPS або на виділенному сервері.

Прокрутка до верху