---
title: 'Алгоритмы сжатия файлов'
sidebar_label: 'Алгоритмы сжатия файлов'
description: 'Какие есть алгоритмы сжатия файлов, как включить алгоритм сжатия Brotli'
sidebar_position: 5
---

import Formbricks from '@theme/MDXComponents/Formbricks';

# Алгоритмы сжатия файлов

:::info

Сжатие файлов доступно, если выбран [тип оптимизации раздачи контента](/cdn/content/content-delivery-optimization.mdx) — Статика.

:::

Алгоритмы сжатия подходят для текстовых форматов, например: `HTML`, `CSS`, `JS`, `JSON`, `XML`, `SVG` и других. Алгоритмы работают по одинаковому принципу: находят в файле повторяющиеся фрагменты и заменяют их ссылками на первый встреченный фрагмент — это уменьшает размер файла.

Алгоритмы сжатия не подходят для обработки уже сжатых файлов, например растровых изображений, аудио- и видеофайлов и архивов. Чтобы управлять качеством и форматом изображений (например, конвертировать в WebP), вы можете подключить услугу [Оптимизация изображений](/cdn/content/image-optimization.mdx).

CDN поддерживает два алгоритма сжатия:

* [Gzip](#gzip) — распространенный алгоритм: работает со всеми протоколами HTTP, поддерживает HTTPS, совместим со всеми браузерами. Gzip работает по умолчанию;
* [Brotli](#brotli) — на 20% эффективнее Gzip, но работает только по HTTPS, с современными браузерами и некоторыми типами файлов. Brotli можно включить дополнительно.

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

## Алгоритм сжатия Gzip \{#gzip}

Gzip работает без ограничений:

* поддерживает HTTP и HTTPS;
* совместим со всеми браузерами;
* применяется ко всем типам файлов.

По умолчанию Gzip включен, мы не рекомендуем его отключать. Если вы [отключили](#disable-gzip) Gzip, его можно [включить](#enable-gzip) в любой момент.

### Включить алгоритм сжатия Gzip \{#enable-gzip}

1. В [панели управления](https://my.selectel.ru/cdn-v3) в верхнем меню нажмите **Продукты** и выберите **CDN**.

2. В разделе **CDN-ресурсы** откройте страницу ресурса → вкладка **Оптимизация**.

3. Убедитесь, что в блоке **Тип оптимизации раздачи** выбрано **Статика**.

4. В блоке **Сжатие** отметьте чекбокс **Сжатие Gzip**.

5. Нажмите **Применить**.
   Во время применения настроек ресурс будет находиться в статусе `PROCESSING`.
   В это время применение других настроек недоступно.
   Настройки применятся, когда ресурс перейдет в статус `ACTIVE`.

### Отключить алгоритм сжатия Gzip \{#disable-gzip}

Мы не рекомендуем отключать Gzip, если вы не используете альтернативный метод сжатия на источнике. Без сжатия файлы будут передаваться в исходном размере. Это увеличит время загрузки для пользователей и объем потребляемого трафика CDN.

1. В [панели управления](https://my.selectel.ru/cdn-v3) в верхнем меню нажмите **Продукты** и выберите **CDN**.

2. В разделе **CDN-ресурсы** откройте страницу ресурса → вкладка **Оптимизация**.

3. В блоке **Сжатие** снимите чекбокс **Сжатие Gzip**.

4. Нажмите **Применить**.
   Во время применения настроек ресурс будет находиться в статусе `PROCESSING`.
   В это время применение других настроек недоступно.
   Настройки применятся, когда ресурс перейдет в статус `ACTIVE`.

## Алгоритм сжатия Brotli \{#brotli}

Brotli — это алгоритм сжатия, который позволяет достичь большей степени сжатия по сравнению с Gzip — в среднем на 20%.

У Brotli есть ограничения:

* работает только по протоколу HTTPS;
* совместим только с современными браузерами;
* обрабатывает только некоторые типы файлов.

Список типов файлов, которые обрабатывает Brotli:

* `application/javascript`;
* `application/json`;
* `application/vnd.apple.mpegurl`;
* `application/vnd.ms-fontobject`;
* `application/x-font-opentype`;
* `application/x-font-truetype`;
* `application/x-font-ttf`;
* `application/x-javascript`;
* `application/xml`;
* `application/xml+rss`;
* `font/eot`;
* `font/opentype`;
* `font/otf`;
* `image/svg+xml`;
* `image/vnd.microsoft.icon`;
* `image/x-icon`;
* `text/compressible`;
* `text/css`;
* `text/javascript`;
* `text/xml`.

### Включить алгоритм сжатия Brotli \{#enable-brotli}

1. В [панели управления](https://my.selectel.ru/cdn-v3) в верхнем меню нажмите **Продукты** и выберите **CDN**.

2. В разделе **CDN-ресурсы** откройте страницу ресурса → вкладка **Оптимизация**.

3. Убедитесь, что в блоке **Тип оптимизации раздачи** выбрано **Статика**.

4. В блоке **Сжатие** отметьте чекбокс **Сжатие Brotli**.

5. Нажмите **Применить**.
   Во время применения настроек ресурс будет находиться в статусе `PROCESSING`.
   В это время применение других настроек недоступно.
   Настройки применятся, когда ресурс перейдет в статус `ACTIVE`.

### Отключить алгоритм сжатия Brotli \{#disable-brotli}

1. В [панели управления](https://my.selectel.ru/cdn-v3) в верхнем меню нажмите **Продукты** и выберите **CDN**.

2. В разделе **CDN-ресурсы** откройте страницу ресурса → вкладка **Оптимизация**.

3. В блоке **Сжатие** снимите чекбокс **Сжатие Brotli**.

4. Нажмите **Применить**.
   Во время применения настроек ресурс будет находиться в статусе `PROCESSING`.
   В это время применение других настроек недоступно.
   Настройки применятся, когда ресурс перейдет в статус `ACTIVE`.

## Проверить работу алгоритма сжатия \{#check-compression}

1. Перейдите на свой сайт, который раздается через CDN.

2. Откройте инструменты разработчика → вкладка **Network**.

3. В блоке **Name** нажмите на строку с CSS- или JS-файлом.

4. На вкладке **Headers** в блоке **Response headers** найдите заголовок **Content-Encoding**:

   * если значение заголовка — `gzip`, применяется [алгоритм сжатия Gzip](#gzip);
   * если значение заголовка — `br`, применяется [алгоритм сжатия Brotli](#brotli);
   * если заголовка нет — сжатие не применяется. Это может происходить из-за того, что алгоритмы сжатия отключены в настройках CDN-ресурса или включен только алгоритм сжатия Brotli, который не поддерживается браузером пользователя.

5. Если заголовка **Content-Encoding** нет, проверьте в настройках CDN-ресурса, что [включен алгоритм сжатия Gzip](#enable-gzip) и при необходимости — [Brotli](#brotli).

<Formbricks />
