Ми використовуємо cookie-файли
Для оптимізації роботи нашого сайту ми використовуємо cookie-файли. Продовжуючи використовувати сайт, Ви погоджуєтеся з використанням cookie-файлів.
Новий дизайн
Панель керування
  • Русский
  • Українська
  • English
  • UAH
  • USD
  • RUB
  • EUR
  • 0-800-307-307 Гаряча лінія
  • +38 (044) 392-74-33 Київ
  • +38 (057) 728-39-00 Харків
  • +38 (056) 794-38-31 Дніпро
  • +38 (032) 229-58-93 Львів
  • +38 (048) 738-57-70 Одеса
  • +38(093) 170-15-42  Life
  • +38 (067) 400-88-44 Київстар
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7 (499) 348-28-61 Москва

2.19.3. оптимізація сайту

Збільшити продуктивність і швидкість роботи сайту можна кількома шляхами:

  1. Оптимізація сайту:
  2. Оптимізація роботи ПО сервера (Для VPS і виділених серверів).
  3. Збільшення наданих ресурсів:

Оптимізація сайту недаремно винесена на перше місце, тому що має найвищий пріоритет серед інших.

Якщо взяти два абсолютно однакових сервера з однаково налаштованим ПО і розмістити на одному сайт, на якому використовується неоптимізованими тема оформлення, плюс 2-3 десятка ніким не перевірених щодо навантаження і взаємодії плагінів, а на іншому той же сайт, але використовує кешування готових сторінок , з критично необхідним мінімумом максимально оптимізованих між собою плагінів / модулів, то виявиться, що другий сервер навіть без виконання інших пунктів може працювати в 2-4 рази швидше (в деяких випадках все набагато драматичніше і прискорення після грамотної оптимізації сайту становить десятки разів) і створювати менше навантаження, ніж перший.

Зміст

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

З найпростіших напрямків оптимізації можна виділити наступні етапи, що стосуються практично всіх популярних CMS:

  1. Відмова від плагінів і додаткових модулів - всілякі плагіни, модулі та розширення, які, здавалося б, розширюють функціональність сайту, в дуже багатьох випадках - його ж вороги в розрізі продуктивності. Причин тому безліч. Основна - багато модулі написані ентузіастами і мають дуже низьку якість як в плані споживаних ресурсів, так і в плані безконфліктності з іншими модулями і CMS. Тому перш ніж додати новий модуль або плагін подумайте, чи не можна реалізувати той же функціонал без нього? Якщо не можна - після установки детально протестуйте його під навантаженням, подивіться як зросло споживання ресурсів, почитайте відгуки інших користувачів.
  2. Відмова від крадених і неякісних тим оформлення і плагінів - як не дивно, це теж важливий момент, тому що в 8 випадках з 10 зламаний продукт, всупереч запевненням хакерів, залишається не тільки небезпечним в плані можливих «закладок» і бекдор, але і набагато більш проблемним в плані споживання ресурсів. «Самопісний» ж компоненти і теми в переважній більшості випадків дуже неякісні. По можливості уникайте їх. Якщо важливо низьке споживання ресурсів, не використовуйте «універсальні» теми. За рахунок використання різних додаткових фреймворків такі «комбайни» працюють повільніше, а ресурсів споживають більше.
  3. Кешування сторінок скриптами - такий спосіб дозволяє генерувати сторінки сайту заздалегідь і зберігати їх в статичні файли, які будуть передаватися в рази швидше. Варто використовувати збереження сторінок скриптами сайту в файли скрізь, де можливо. Віддача заздалегідь сформованої сторінки сайту витрачає набагато менше ресурсів і часу, ніж формування її для кожного нового відвідувача «з нуля». Цей спосіб є одним з найбільш ефективних за рахунок використання статичних сторінок.
  4. Оптимізація бази даних і запитів до неї. При використанні більшості CMS одним з найбільш важливих моментів є оптимізація роботи бази даних і запитів до неї, так як вона використовується для зберігання практично всіх даних, необхідних для коректної роботи сайту та генерації сторінок. Багато сайтів можуть працювати повільно тільки через проблеми зі зберіганням даних в базі даних і неоптимізованих запитів до неї. Саме тому може рости показник TTFB і збільшуватися час на обробку запитів.
  5. Звернення до сторонніх джерел. Величезною проблемою в швидкості завантаження сторінок або їх генерації може бути завантаження даних з інших серверів. Причин проблем в завантаженні ресурсів може бути величезна маса, але найбільш частими і розв'язуються на стороні сайту є:
    • Відстань сервера, до якого виконуються запити. Чим далі розміщується цільової сервер, тим більше часу займає обмін даними з ним. Це виражається в повільній генерації сторінок скриптами через те, що вони очікують відповідь від віддаленого сервера і, як наслідок, в повільній завантаженні сторінок в браузері, досить часто - зависло на деяких етапах «відтворення» сторінки (Це явно виражене при послідовній повільної завантаженні частин сторінки - спочатку шапки, потім, після деякого очікування, подгрузки решти контенту).
    • Недоступність цільового сервера. Якщо сервер, з яким повинен виконуватися обмін даними, недоступний, то може виникнути величезна проблема в швидкості завантаження і генерації сторінок. Якщо проблема виникає на стороні бекенд, то сторінка може бути тривалий час порожній і тільки коли процес з'єднання буде скинуто - сторінка може відобразитися (Найчастіше це обрив з'єднання, що в рамках віртуального і бізнес хостингу відбудеться через 3600 секунд від початку з'єднання), При цьому буде здаватися, що сайт не працює.
    • Для вирішення подібних проблем рекомендуємо:
      • Використовувати CDN-сервіси для потрібних ресурсів, якщо така можливість є.
      • Мінімізувати віддалене зберігання ресурсів. Це можна зробити шляхом зберігання потрібних ресурсів в каталозі сайту, тим самим підвищивши стабільність і швидкість сайту.
      • Використовувати асинхронну завантаження ресурсів (за допомогою async або defer), Які не беруть участі в генерації контенту або є маловажливими. Наприклад, лічильники, реклама та інше.
      • Мінімізувати звернення до сторонніх ресурсів з боку бекенд і, по можливості, встановлювати певний таймаут для функцій, які виконують підключення (наприклад, використовуючи stream-set-timeout, в curl опція CURLOPT_CONNECTTIMEOUT, та інші).
  6. Зменшення кількості запитів до сервера. При завантаженні сайту, в разі безлічі підвантажуваних файлів, можуть виникати проблеми в швидкості його завантаження або ж зовсім у вигляді помилок. На хостингу існують певні обмеження на кількість одночасних з'єднань, в зв'язку з чим можуть з'являтися помилки. Але навіть якщо таких немає, то безліч запитів буде впливати на швидкість завантаження сайту. Кожен файл створює окреме підключення до сервера, процес ініціації підключення і всіх інших етапів для коректної передачі даних також займає певний час, що і створює затримки в швидкості завантаження сайту. Якщо порівнювати два ідентичних сайту, але в одному 150 завантаження, а в другому ті ж дані, але вже в 50 файлах, то можна помітити значний приріст швидкості його відображення.
    Для вирішення цієї проблеми рекомендуємо:
    • Зменшити кількість завантажених файлів на сайті шляхом відмови від непотрібних елементів або шляхом подгрузки їх після певних подій (наприклад, прокрутка сторінки, активація кнопок та інше).
    • Об'єднати можливі файли в один або кілька. Якщо використовувати кілька CSS-файлів, то в деяких випадках їх можна об'єднати в один для економії кількості запитів і поліпшення стиснення. Автоматично такі дії можуть проробляти деякі плагіни або компоненти, а також функціонал Pagespeed. Але вкрай важливо переконатися, що при використанні таких засобів оптимізації сайт працює коректно.
    • Не варто використовувати асинхронну завантаження ресурсів повсюдно, так як якщо на сайті, де завантажується 50 ресурсів, для всіх файлів буде встановлена асинхронна завантаження, то це породить 50 одночасних підключень при одному зверненні до сайту, що може створити не тільки складності у вигляді помилок з боку сервера через обмеження по одночасним з'єднанням, але також і на боці клієнта, який відкрив сайт, так як всі одночасні запити також створюють досить високе навантаження на стороні браузера.
  7. Оптимізація ресурсів сайту. При завантаженні сайту можуть виникати проблеми, що сама верстка подгружается досить швидко, але елементи сайту вантажаться дуже довго, все підвисає та інше. Найчастіше така проблема спостерігається при неправильній завантаженні великих ресурсів сайту. Наприклад, зображення, що мають дуже високу роздільну здатність, завантажуються для мобільної версії відразу у високій роздільній здатності, або завантаження безлічі JS-скриптів з величезною кількістю даних. Існують різні технології, що дозволяють прискорити завантаження даних, наприклад деякі з них:
    • Lazyload (лінива завантаження) - суть технології полягає в тому, що при відкритті сторінки завантажуються не всі зображення, а тільки ті, які потрапляють в зону видимості. Решта зображення подргужаются браузером динамічно в міру пересування між об'єктами.
    • Оптимізація розміру зображень. За рахунок ефективного стиснення зображень можна домогтися істотного приросту до швидкості завантаження сторінок.
    • Використання зображень в форматі WebP. Такий формат отримав популярність за рахунок меншого «ваги» щодо інших форматів без втрати якості зображення.
    • Відкладене завантаження скриптів. Здебільшого деякі скрипти сайту не потрібні до його генерації, тому їх першочергове завантаження втрачає сенс. Щоб сайт виглядав вкрай швидким, повинна прогружаются першої візуальна складова сайту, після чого вже тільки весь динамічний контент. За рахунок такої зміни порядку завантаження можна домогтися візуального прискорення завантаження сайту.
  8. І ще один дуже ефективний, Але трудомісткий і не завжди можливий шлях - відмова від скриптів всюди, де це можливо. Найшвидший сайт - сайт, що складається з набору статичних файлів. Один з варіантів такої реалізації - використання систем управління контентом (CMS) Формують саме набір HTML-файлів (зрозуміло сама адміністративна частина CMS при цьому цілком може складатися з скриптів). прикладом такої CMS може бути Movable Type.

В рамках хостингу можна зробити певні настройки, які в деякій мірі можуть допомогти в оптимізації роботи сайту, але їх не варто сприймати як універсальний засіб на всі випадки життя, так як та чи інша технологія може не принести очікуваного ефективності. Велика частина рекомендацій налаштувань на хостингу заточена на використання кешування даних і сторінок для подальшої передачі клієнтові без повторної обробки запиту скриптами і генерації сторінок заново. Принцип кешування даних дозволяє зменшити переданий обсяг даних між скриптами або серверами, зменшувати кількість оброблюваних сценаріїв та інше, тим самим набагато прискорюючи генерацію відповіді. Такий спосіб досить корисний для усунення проблеми з високим TTFB. Важливо враховувати, що не для всіх CMS є можливість налаштувати всі зазначені способи оптимізації.

  1. Включення кешування (Memcache(d)). Використання Memcache (d) в різних системах організовано по різному, в деяких він використовується виключно для збереження даних переданих з баз даних (Що дозволяє заощадити на часі передачі запиту в БД, пошуку потрібних даних і передачі запиту назад), В деяких він використовується для кешування конкретних сторінок сайту (Що більш ефективно в плані швидкості, але менш зручно в плані генерації динамічного контенту). Варто звернути увагу, що поведінка кешування даних в пам'яті Memcache (d) вказується безпосередньо в скриптах сайту.
  2. Налаштування кешування Opcache. Використання Opcache дозволяє заощадити безліч часу за рахунок збереження скомпільованого байт-коду скриптів. Такий спосіб вельми корисний у разі, якщо використовується безліч незмінних скриптів які і можуть займати більшу частину часу. На відміну від Memcache (d) – Opcache може бути просто підключений до сайту без потреби додаткових налаштувань.
  3. Використання сховища даних Redis – за своєю подобою цей спосіб схожий з використанням Memcahce (d) за рахунок того, що вони обидва зберігають дані в оперативну пам'ять і після дозволяють використовувати для більш швидкого доступу, логіка поведінки збереження даних та іншого також схожа.
  4. Використання можливостей оптимізації PageSpeed. Модуль оптимізації PageSpeed встановлений на хостингу за замовчуванням і все його можливості доступні для будь-якого сайту. В деякій мірі більшість його налаштувань можуть бути небезпечними для роботи сайту за рахунок того, що змінюються імена підвантажуваних скриптів, принцип їх завантаження та інше, в залежності від включених параметрів, але як один із способів оптимізації – його можна розглядати для прискорення завантаження вмісту. Важливо розуміти, що для зменшення TTFB (Часу відповіді від сервера) даний спосіб зовсім не підійде, так як він спрямований на поліпшення генерації сторінок в браузері клієнта і завантаження ресурсів сайту.
  5. Кешування статичного вмісту. Вкрай корисна основоположна можливість для прискорення завантаження веб-сторінок це кешування безпосередньо самих сторінок і підключених в них ресурсів. Важливо звернути увагу на те, що таке кешування проводиться не на стороні сервера, а на стороні клієнта і тому перше завантаження сайту буде незмінна, але наступні переходи по сторінках або входи на сайт можуть бути набагато швидше і зовсім не помітні, при правильній організації сайту і кешування.

Як можна прискорити роботу мого сайту?

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

Чи можна прискорити роботу сайту шляхом зміни тарифу?

Тарифні плани віртуального хостингу працюють на одних і тих же серверах, тому зміна тарифу навряд чи допоможе.

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