Налаштування стиснення контенту (Gzip/Brotli) для сайту

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

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

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Налаштування стиснення контенту (Gzip/Brotli) для сайту
Проста
від 4 годин до 2 робочих днів
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Налаштування Gzip/Brotli сжиття

Сжиття на транспортному рівні зменшує розмір HTML, CSS, JS у 3–10 разів. Brotli дає на 15–25% краще сжиття ніж Gzip при тому ж CPU. Налаштування займає 30 хвилин і не вимагає змін коду.

Nginx: Gzip + Brotli

# /etc/nginx/nginx.conf або /etc/nginx/conf.d/compression.conf

# Gzip — підтримується скрізь
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;        # 1-9, баланс CPU/сжиття; 6 — хороша точка
gzip_min_length 256;      # не сжимати дуже малі файли
gzip_types
    application/javascript
    application/json
    application/xml
    application/rss+xml
    image/svg+xml
    text/css
    text/html
    text/javascript
    text/plain
    text/xml
    font/woff
    font/woff2;

# Brotli — потребує модуль ngx_brotli
# Встановлення: apt install libnginx-mod-brotli
brotli on;
brotli_comp_level 6;
brotli_types
    application/javascript
    application/json
    text/css
    text/html
    text/plain
    image/svg+xml
    font/woff2;

Перевірка:

curl -H "Accept-Encoding: br" -I https://example.ru/
# Ответ повинен містити: Content-Encoding: br

curl -H "Accept-Encoding: gzip" -I https://example.ru/
# Ответ: Content-Encoding: gzip

Pre-compressed статичні ассети

Для статичних файлів (JS, CSS, бандли) — генерувати .gz та .br файли при сборці, віддавати напрямку. Без витрат CPU при кожному запиті:

// vite.config.ts
import { defineConfig } from 'vite';
import viteCompression from 'vite-plugin-compression';

export default defineConfig({
    plugins: [
        viteCompression({ algorithm: 'gzip',   ext: '.gz' }),
        viteCompression({ algorithm: 'brotliCompress', ext: '.br' }),
    ]
});
# Nginx: віддавати pre-compressed файли
location ~* \.(js|css|woff2)$ {
    gzip_static  on;    # шукати .gz версію
    brotli_static on;   # шукати .br версію (модуль ngx_brotli)
    expires 1y;
    add_header Cache-Control "public, immutable";
}

Apache

# .htaccess
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css application/javascript
    AddOutputFilterByType DEFLATE application/json image/svg+xml font/woff2
</IfModule>

Laravel: middleware для API

// Laravel не сжимає відповіді за умовчанням
// Додати middleware у bootstrap/app.php для API
->withMiddleware(function (Middleware $middleware) {
    $middleware->api(append: [
        \Illuminate\Http\Middleware\GzipResponse::class, // Laravel 11+
    ]);
})

Або через Nginx — переважно для продуктивності.

Типові результати сжиття

Файл Оригінал Gzip Brotli
app.js 500 КБ 150 КБ 130 КБ
app.css 80 КБ 18 КБ 15 КБ
HTML сторінка 50 КБ 12 КБ 10 КБ

Час налаштування: 30 хвилин для конфігурації Nginx.