Gzip — перше, що перевіряє аудитор PageSpeed після встановлення Бітрікс. Ми часто бачимо: він не налаштований зовсім або налаштований неправильно. Стискається HTML, але не JS і CSS, або compression level виставлено на максимум і жере CPU без відчутної користі. Типовий HTML сторінки каталогу — 80–200 КБ, після Gzip 6 — 15–35 КБ. Економія 75–80% трафіку на кожен некешований HTML-запит. Для магазину з 10 000 відвідувачів на день це суттєво знижує навантаження на сервер і покращує LCP. Ми вже допомогли більш ніж 500 проєктам налаштувати стиснення — досвід понад 10 років.
Хочете налаштувати gzip правильно? Замовте аудит і налаштування — типовий проєкт займає від 2 до 4 годин, вартість розраховується індивідуально.
Як gzip впливає на швидкість завантаження?
Стиснення зменшує об'єм переданих даних. Для HTML — у 4-6 разів, для CSS/JS — у 3-5 разів. Наприклад, сторінка каталогу без стиснення важить 180 КБ, зі стисненням — 25 КБ. На мобільному інтернеті це дає економію 3-5 секунд завантаження. Gzip підтримується всіма сучасними браузерами, і пошуковики враховують швидкість як фактор ранжування.
Порівняння: gzip_static vs динамічне стиснення
Статичне pre-gzip (gzip_static) у 3 рази менш затратне по CPU, ніж динамічне стиснення, оскільки файли стискаються один раз при деплої. Динамічне стиснення обробляє кожен запит, що при рівні 6 дає відмінне стиснення, але навантажує CPU. Для статичних ресурсів (CSS, JS) gzip_static є кращим. Ось таблиця порівняння:
| Параметр | gzip_static | Динамічне gzip |
|---|---|---|
| Навантаження CPU | Немає (віддача готових файлів) | 3x на рівні 6 |
| Швидкість віддачі | Максимальна | Трохи повільніше |
| Оновлення файлів | Потрібне перестворення .gz | Автоматично |
| Підтримка | nginx тільки | Всі сервери |
Ефективність стиснення за типами контенту
| Тип контенту | Розмір без стиснення | Розмір зі стисненням (gzip 6) | Економія |
|---|---|---|---|
| HTML сторінки каталогу | 180 КБ | 25 КБ | 86% |
| CSS-файл (bootstrap) | 150 КБ | 35 КБ | 77% |
| JavaScript (jquery) | 85 КБ | 20 КБ | 76% |
| JSON-відповідь API | 50 КБ | 10 КБ | 80% |
Чому gzip static кращий для високонавантажених проєктів?
На проєктах з мільйонами запитів до статики навантаження CPU від динамічного стиснення може становити 10–15% всіх ресурсів. gzip_static повністю знімає його. В одному з наших проєктів (каталог 1 млн товарів) перехід на gzip_static знизив CPU з 60% до 35%, а швидкість відповіді статики скоротилася на 200 мс. Отримайте консультацію, якщо хочете впровадити gzip_static на своєму проєкті.
Як налаштувати gzip в nginx: покрокова інструкція
Стандартна установка Бітрікс через setup.sh налаштовує базовий Gzip, але часто пропускає важливі MIME-типи і не включає gzip_vary.
Крок 1: Базова конфігурація
Повна конфігурація в блоці http або server:
gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_min_length 1024; gzip_types text/plain text/css text/xml text/javascript application/javascript application/x-javascript application/json application/xml application/xml+rss application/rss+xml application/atom+xml image/svg+xml font/ttf font/otf application/vnd.ms-fontobject; gzip_vary on — критично важливий при наявності CDN або проксі. Додає заголовок Vary: Accept-Encoding, щоб кеші не віддавали стислий контент браузерам без підтримки Gzip.
gzip_min_length 1024 — не стискаємо файли менше 1 КБ. Overhead Gzip-заголовків і CPU-витрати не виправдані для маленьких відповідей.
gzip_comp_level 6 — рівні 7–9 дають менше 2% додаткового стиснення при 2–3x рості CPU. Рівень 1–2 швидкий, але стискає на 15–20% гірше. Згідно з тестами, рівень 6 дає найкраще співвідношення стиснення та продуктивності.
Крок 2: Включення gzip_static
gzip_static on; — при запиті app.js nginx шукає app.js.gz. Якщо знайдено — віддає без витрат CPU на компресію.
Генерація .gz-файлів у деплой-скрипті:
find /var/www/site/public/build -name "*.js" -o -name "*.css" | xargs -P4 -I{} gzip -k -6 {} Крок 3: Перевірка подвійного стиснення
Бітрікс вміє стискати відповідь через PHP (ob_gzhandler). Якщо увімкнено і в PHP, і в nginx — браузер отримує двічі стислий контент. Перевіряємо в php.ini або bitrix/php_interface/dbconn.php — zlib.output_compression має бути Off. В налаштуваннях Бітрікс: «Налаштування → Налаштування продукту → Стиснення сторінок» вимкнути, якщо стиснення робить nginx.
Що обрати: gzip_static чи динамічне стиснення на Apache?
На серверах з nginx (рекомендація Бітрікс) конфігурація простіша і продуктивніша — одноразове стиснення, статичне pre-gzip. Apache вимагає модуль mod_deflate, який завантажує більше CPU. На shared-хостингах вибір зазвичай обмежений. У будь-якому випадку, gzip має бути увімкнено на стороні веб-сервера, а не через PHP.
Конфігурація Apache
Для серверів Бітрікс на Apache (bitrix-env використовує nginx як фронтенд, але на shared-хостингах часто чистий Apache):
<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml AddOutputFilterByType DEFLATE text/css application/javascript AddOutputFilterByType DEFLATE application/json application/xml AddOutputFilterByType DEFLATE image/svg+xml font/ttf DeflateCompressionLevel 6 # Не стискати вже стислі формати SetEnvIfNoCase Request_URI \.(?:gif|jpg|jpeg|png|zip|gz|br)$ no-gzip dont-vary Header append Vary Accept-Encoding </IfModule> Типові помилки конфігурації Бітрікс
Подвійне стиснення через PHP і nginx. Ми вже згадували — вимикаємо zlib.output_compression.
Відсутність gzip_proxied any — якщо сайт за балансувальником або CDN, nginx без цієї директиви не стискає відповіді для проксованих запитів (заголовок Via присутній).
application/json не в списку. Відповіді API Бітрікс (компоненти, що працюють в режимі AJAX) повертають JSON. Без стиснення JSON-відповіді каталогу з 50 товарами важать 40–80 КБ, зі стисненням — 8–15 КБ.
Перевірка стиснення
# Перевіряємо стиснення відповіді curl -sI -H "Accept-Encoding: gzip" https://site.ru/ | grep -i content-encoding # Content-Encoding: gzip # Порівнюємо розміри curl -s --compressed https://site.ru/ | wc -c curl -s -H "Accept-Encoding: identity" https://site.ru/ | wc -c Інструмент Check GZIP compression на GiftOfSpeed показує стиснення для будь-якого URL разом з економією в байтах.
Що входить у нашу послугу з налаштування gzip
- Аудит поточної конфігурації сервера та Бітрікс.
- Налаштування gzip на nginx або Apache з перевіркою всіх MIME-типів.
- Оптимізація рівня стиснення та кешування.
- Налаштування gzip_static для статичних ресурсів.
- Перевірка подвійного стиснення, коригування PHP та Бітрікс.
- Тестування через PageSpeed, GTmetrix та curl.
- Документація щодо внесених змін.
- Консультація та підтримка протягом тижня після налаштування.
Ми гарантуємо результат: прискорення завантаження в тестах на 30-400% (залежно від поточного стану). Якщо ви сумніваєтеся в налаштуваннях — зв'яжіться з нами, оцінимо проєкт безкоштовно. Отримайте консультацію з налаштування gzip для вашого Бітрікс-проєкту.







