Официальный сайт движения «Москва без Лужкова!»
Главная Новости Москвы Наши новости Популярное
  • Новости
  • Новости
  • ВХОД В ЛИЧНЫЙ КАБИНЕТ
    логин
    пароль
       
    Новости

    Гальмує Бітрікс? Комплексне прискорення сайту на Бітрікс

    1. Прискорити генерацію сторінок на сервері
    2. Виправити всі помилки з "Перевірки системи"
    3. Оптимізація налаштувань веб-сервера (apache, nginx, php-fpm)
    4. Оптимізація налаштувань MySQL (або інший СУБД)
    5. Слабкий сервер / хостинг
    6. Звернення до сторонніх API (сервісів / ресурсів) в php-коді
    7. Неоптимальні (важкі) запити до бази даних
    8. Неоптимальна логіка php-коду
    9. Розрослися таблиці в базі даних
    10. Вимкнена або неправильно працює система кешування
    11. композитний сайт
    12. Прискорити завантаження сторінок в браузері
    13. оптимізація зображень
    14. Кешування статичних файлів на стороні сервера (зображення, css, js)
    15. Приберіть все редіректи і неіснуючі ресурси
    16. Відключення непотрібних скриптів і віджетів
    17. Об'єднання css і js
    18. Стиснення (мініфікація) js і css
    19. Зменшуємо кількість сторонніх ресурсів
    20. Переводимо сайт на протокол HTTP / 2

    Найчастіше до нас звертаються клієнти з однією і тією ж проблемою - гальмує Бітрікс.

    Насправді ж саме ядро ​​(движок) в сучасних версіях Бітрікс не гальмує.

    Гальма починаються тоді, коли на сайті використовуються складна або неоптимальна логіка, коли сайт великий і складний, коли на сторінках сайту використовується багато неоптимальною javascript-логіки і т.д.

    Зазвичай гальмують досить старі сайти, які роками допрацьовуються / розвиваються, все ускладнюючи і ускладнюючи свою логіку і нарощуючи товарний асортимент.

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

    Швидкість завантаження сторінки складається з двох основних частин:

    1. Швидкість генерації html-сторінки на сервері.

    2. Швидкість завантаження всіх ресурсів в браузері (html-сторінка, всі css, javascript, зображення, відео і т.д.).

    Тому роботи по прискоренню сайту (або окремих сторінок) потрібно вести в обох напрямках - прискорювати бекенд (швидкість генерації сторінок на сервері), і прискорювати фронтенд (швидкість завантаження в браузері).

    Нижче наведено основні рекомендації збільшення швидкості Бітрікс, а також типові проблеми, що уповільнюють роботу сайту.

    Прискорити генерацію сторінок на сервері

    Найбільша проблема - це коли html-сторінки на сервері генеруються повільно. Повільно - зазвичай це довше 0.3 секунд.

    Саме при цій проблемі і складається відчуття, що швидкість Бітрікс (самого движка) дуже низька - можуть гальмувати навіть сторінки "адмінки".

    Щоб прискорити генерацію тієї чи іншої сторінки на сервері, потрібно проаналізувати логіку її генерації і знайти неоптимальну логіку (вузькі місця) або помилки розробників. У цьому можуть допомогти такі інструменти як xdebug або інструменти, вбудовані в CMS / фреймворка, на якому працює ваш сайт. Наприклад, в Бітрікс є інструмент "Налагодження" в панелі адміністратора в публічній частині сайту.

    Далі все приклади будуть даватися для сайту на Бітрікс.

    Далі все приклади будуть даватися для сайту на Бітрікс

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

    Виправити всі помилки з "Перевірки системи"

    В першу чергу необхідно запустити "Перевірку системи" в панелі адміністрування Бітрікс та виправити всі виявленні проблеми.

    Це самі ключові помилки, які докорінно впливають на роботу сайту.

    Зазвичай вони пов'язані з неправильними настройками сервера / хостингу.

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

    Установки> Інструменти> Перевірка системи

    Оптимізація налаштувань веб-сервера (apache, nginx, php-fpm)

    Найчастіше настройки стандартної збірки веб-сервера є неоптимальними.

    Тому рекомендується проаналізувати стан і настройку веб-сервера і на базі проведеного аудиту оптимізувати настройки сервера.

    Наші фахівці готові вам в цьому допомогти.

    Додатково до цього необхідно подивитися рекомендації Бітрікс в адмінки по оптимізації налаштувань PHP.

    Установки> Продуктивність> PHP

    Оптимізація налаштувань MySQL (або інший СУБД)

    Аналогічно оптимізації веб-сервера, рекомендується оптимізувати настройки бази даних.

    А також звірити поточні настройки з рекомендація в адмінці Бітрікс.

    Установки> Продуктивність> Сервер БД

    Слабкий сервер / хостинг

    Як зрозуміти, що вам потрібен більш потужний сервер / хостинг?

    Монітор продуктивності сервера в адмінці Бітрікс видає значення менше 30, не дивлячись на те що ваші сисадміни (або техпідтримка хостингу) стверджує, що сервер налаштований оптимально (а дані з адмінки Бітрікс не видають проблем з неоптимальними настройками php або mysql).

    Монітор продуктивності сервера в адмінці Бітрікс видає значення менше 30, не дивлячись на те що ваші сисадміни (або техпідтримка хостингу) стверджує, що сервер налаштований оптимально (а дані з адмінки Бітрікс не видають проблем з неоптимальними настройками php або mysql)

    Примітка! Занадто поганий показник "середній час відгуку" може значно погіршувати загальний показник Зміни. Якщо цей пункт видає занадто велику цифру, потрібно проаналізувати логіку генерації головної сторінки і забезпечити її швидку віддачу сервером.

    Отже, якщо не дивлячись на всі оптимізації сервера, показник Монітору продуктивності маленький, рекомендується переїзд на більш потужний і оптимізований хостинг / сервер.

    Підібрати потужний сервер за доступною ціною можна у нас .

    Звернення до сторонніх API (сервісів / ресурсів) в php-коді

    Найчастіше процес генерації сторінок гальмують звернення до сторонніх сервісів в php-коді.

    Наприклад, це може бути сервіси визначення міста, розрахунку вартості доставки і т.п ..

    Щоб зрозуміти, як виправити - треба розібратися, чому гальмує.

    Можливо, в коді неоптимально (неправильно) використовується API стороннього сервісу і є більш оптимальні варіанти його використання. Можливо, саме по собі API сервісу дуже повільне.

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

    Якщо оптимізувати використання поточного сервісу неможливо, то потрібно задуматися над переходом на альтернативні сервіси і API (або про кешування роботу поточного API).

    Неоптимальні (важкі) запити до бази даних

    Найчастіше причина довгої генерації сторінок на сервері - важкі SQL-запити.

    В цьому випадку є як мінімум 2 варіанти їх прискорення:

    1. Оптимізація самого запиту. Створити відсутні індекси, виключити з вибірки непотрібні поля, підзапити, обчислення.

    2. Кешування запиту. Щоб один і той же важкий запит не звертався до бази даних при кожному завантаженні, результати вибірки можна зберегти (в пам'яті, в файлі або навіть в самій базі даних). Детальніше про кешування в Бітрікс .

    Неоптимальна логіка php-коду

    Навіть якщо в php-коді немає звернень ні до бази даних, ні до сторонніх ресурсів, такий код може гальмувати.

    Виною тому може стати неоптимальна логіка коду - вибірка з великих масивів, нескінченні (або майже нескінченні) цикли, робота з великими файлами даних і т.п.

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

    Розрослися таблиці в базі даних

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

    Найчастіше це різні логи, журнали, дублі товарів та інші системні таблиці.

    Щоб подивитися всі розрослися таблиці, зайдіть в адмінці в розділ:

    Установки> Продуктивність> Таблиці

    І відсортуйте все таблиці в порядку убування розміру.

    Якщо розмір таблиці більше 500 МБ, то з великою ймовірністю можна говорити про те, що в цій таблиці є непотрібні (застарілі) дані, які можна видалити.

    У деяких випадках критичним є і набагато менший розмір таблиць.

    В результаті очищення таких зрослих таблиць дозволить прискорити роботу бази даних.

    Вимкнена або неправильно працює система кешування

    У Бітрікс є досить хороша система кешування.

    Але при розробці сайту питання використання типового кешування спочатку можуть упустити.

    Тому при аналізі повільної генерації сторінок на сервері особливу увагу варто приділити виявленню тих блоків коду (компонентів), де не використовується типове кешування Бітрікс. Виявити такі проблеми допоможе інструмент Налагодження у верхній панелі адміністратора в публічній частині сайту.

    У деяких випадках, типовий механізм Автокешірованія Бітрікс починає працювати неоптимально. Наприклад, якщо з 1С дуже часто проводяться повні вивантаження товарів, то автокешірованіе починає постійно генерувати кеш. При кожному обміні колишній кеш всього каталогу застаріває. Тому сторінки каталогу товарів починають працювати дуже повільно (в 90% випадків кеш товарів виявляється застарілим). В цьому випадку потрібно або йти від частої повного вивантаження товарів з 1С, або допрацьовувати логіку кешування Бітрікс.

    композитний сайт

    Після того як всі очевидні проблеми (описані вище) виправлені, має сенс підключити технологію Композитний сайт (або аналог).

    Прискорити завантаження сторінок в браузері

    Багато важливі критерії, що впливають на швидкість завантаження сторінок в браузері зібрані в інструменті Google PageSpeed ​​Insights. Але є й інші проблеми / ідеї, що впливають на час завантаження в браузері.

    оптимізація зображень

    Гарне прискорення досягається за рахунок стиснення (оптимізації) зображень. Вся справа в тому, що дуже велика частина всіх даних, що завантажуються на сторінці сайту - це зображення.

    Суть алгоритмів стиснення - об'єднати схожі кольори і видалити з файлу різну службову інформацію (коментарі, gps-координати, модель фотоапарата і т.п.).

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

    Кешування статичних файлів на стороні сервера (зображення, css, js)

    На стороні сервера необхідно налаштувати віддачу статичних файлів з кешуванням. Це дозволить не завантажувати повторно все статичні ресурси при перезавантаженні сторінки або відкритті іншої сторінки сайту, на якій використовуються однакові ресурси (jpeg, png, css, js і т.п.).

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

    Приберіть все редіректи і неіснуючі ресурси

    Найчастіше в процесі життєдіяльності сайту на сторінки підключаються всі нові і нові ресурси (картинки, javascript-файли, css-файли). Деякі з них потім видаляються за непотрібністю - але їх підключення забувають прибрати зі сторінки. Деякі з них переміщаються - і для простоти налаштовується редирект зі старої адреси на новий (щоб на всіх сторінках не перепрописують url до новими адресами).

    В результаті цього, на сторінках з'являються ресурси, які при спробі їх завантажити, віддають 404 відповідь (ресурс не існує), а також 301 або 302 відповіді (ресурс переміщено тимчасово або постійно).

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

    Виправлення всіх 4xx, 3xx відповідей дає додаткову перевагу в швидкості завантаження і рендеринга сторінок браузером.

    Відключення непотрібних скриптів і віджетів

    Необхідно точно визначити необхідність використання тих чи інших віджетів, сервісів і бібліотек на базі javascript.

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

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

    Також бувають випадки, що один і той же ресурс підключається на сторінці кілька разів. Наприклад, одна і та ж бібліотека використовується в різних частинах сторінки. Ці блоки були розроблені в різний час різними розробниками. У підсумку підключається одна і та ж бібліотека (можливо, різні версії однієї бібліотеки).

    Ці випадки теж потрібно виключати - залишаючи підключення тільки однієї версії бібліотеки.

    Об'єднання css і js

    Всі використовувані css-файли можна об'єднати в один файл. Аналогічно - з javascript. Завантаження об'єднаних версій відбувається набагато швидше, ніж завантаження всіх ресурсів без об'єднання. Причому найчастіше це добре працює і при використанні HTTP / 2.

    У Бітрікс для цього є спеціальні настройки в ядрі. Це є в настройках Головного модуля.

    Установки> Установки продукту> Налаштування керування> Головний модуль

    І начебто все дуже просто. Але справа в тому, що об'єднуються тільки ті js і css, які підключаються на сайті через API Бітрікс.

    Для js - через метод CMain :: AddHeadScript () . Для css - CMain :: SetAdditionalCSS () .

    В ядрі D7 для цього використовуються Asset :: getInstance () -> addCss () і Asset :: getInstance () -> addJs ().

    А значить, потрібно впевнитися, щоб всі ресурси підключалися саме через API.

    Для цього потрібно включити опції в налаштуваннях, і подивитися - які css / js ще не об'єдналися на ключових сторінках. Підключення цих css / js потрібно переключити на підключення через API Бітрікс.

    Ще одна проблема! Після об'єднання може порушитися черговість підключення javascript-файлів. А через це може порушитися javascript-логіка, відпрацьовувати в браузері. Аналогічно з css - через змінену черговості підключення стилів, можуть деякі стилі можуть неправильно перевизначити і конфліктувати.

    Тому начебто простий процес об'єднання css і js насправді часто стає досить трудомістким і ризикованим. Такі процедури спочатку рекомендується проводити на тестових копіях.

    Стиснення (мініфікація) js і css

    Ще один спосіб прискорити завантаження js / css - це стиснути їх вміст.
    Суть такого стиснення - видалити всі коментарі, весь закоментувавши код, все прогалини, переноси рядків і т.п.

    У Бітрікс для цього є стандартна опція "Підключати мініфіцірованние версії CSS і JS файлів" в налаштуваннях Головного модуля.

    Але цю опцію теж варто використовувати з обережністю, тому що вона автоматом змінює css / js і в деяких випадках це може призвести до проблем.

    Зменшуємо кількість сторонніх ресурсів

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

    По-перше, ви не можете гарантувати безперебійну роботу сторонніх ресурсів. Приклади тому - масові блокування Роскомнадзор, DDoS атаки і просто падіння або зависання сторонніх сайтів і серверів (навіть у дуже відомих і шанованих компаній). Все, на що ви можете впливати, - це на безперебійність роботи свого сервера і сайту. Сторонні системи вам ніяк не підвладні.

    По-друге, якщо розглядати css і js ресурси, то все локальний js / css можна об'єднати і стиснути. Таким чином ви забезпечите швидшу їх завантаження. Із зовнішніми ресурсами ви так вчинити не можете.

    Переводимо сайт на протокол HTTP / 2

    HTTP / 2 - це протокол передачі даних, заснований на протоколі SPDY від компанії Google. На даний момент HTTP / 2 - найактуальніший і передовий стандарт.

    Впровадження протоколу HTTP / 2 на ваш сайт дозволить значно прискорити завантаження сайту сучасними браузерами!

    Прискорення завантаження досягається за рахунок технології мультиплексування.

    Суть його в тому, що всі ресурси, які повинні завантажитися на сторінку, завантажуються паралельно один одному (всі картинки, все css-файли, все js-скрипти, відео, шрифти та інші файли).

    Якщо порівняти із застарілим протоколом HTTP / 1.1, то там для одного домену існував ліміт, який не дозволяв распараллелить завантаження великого коллічесво завантажуються ресурсів.


    HTTP / 2 підтримується всіма сучасними версіями браузерів: Chrome, Firefox, Safari, Opera і іншими. І що дуже важливо - HTTP / 2 підтримується в мобільних версіях браузерів (iOS, Android).

    А старі версії браузерів просто продовжать завантажувати ваш сайт по-старому принципу наче сайт до сих пір працює на HTTP / 1.1.

    Перехід на HTTP / 2 буде абсолютно безболісним.

    Для переходу потрібно лише переналаштувати веб-сервер.

    Якщо у вас використовується віртуальний хостинг (а не виділений або віртуальний сервер), то можна спробувати звернутися в підтримку хостингу. В крайньому випадку - доведеться перейти на окремий орендований сервер.

    Даний розділ буде ще доповнюватися. На черзі опис наступних технік прискорення сайту:

    • Перенесення css і js в нижню частину html-коду сторінок.
    • Неоптимальний підключення сторонніх віджетів / сервісів на базі javascript.
    • Переклад агентів на крон


     

    Найди свой район!

    Восточный

    Западный

    Зеленоградский

    Северный

    Северо-Восточный

    Северо-Западный

    Центральный

    Юго-Восточный

    Юго-Западный

    Южный

    Поиск:      


     
    Rambler's Top100
    © 2007 Движение «Москва без Лужкова!»