Методы сжатия контента - Anycast CDN [RU]
О методах сжатия контента
Сжатие контента уменьшает объем передаваемых данных при запросе вашего файла, сокращает время загрузки и оптимизирует потребление бендвича, что существенно для CDN. Сжатие вашего контента оптимизирует доставку и повышает комфорт использования, одновременно снижая ваши затраты на инфраструктуру и нагрузку на сервера.
С помощью Anycast CDN вы можете легко настроить сжатие в нашей пользовательской платформе и CDN сама сделает все необходимое. Сжатие контента предполагает также отдельное кеширование сжатых копий файлов при разных методах сжатия. Хотя сжатие несколько увеличивает нагрузку на ЦП, оно значительно сокращает потребление бендвича.
Поддерживаемые типы файлов для сжатия
Сжатие доступно не для всех типов файлов. Поддерживаемые типы MIME указаны ниже:
Изображения
image/svg+xml
image/vnd.microsoft.icon
image/x-icon
Шрифты
font/eot
font/opentype
font/otf
font/ttf
font/x-woff
Multipart
multipart/bag
multipart/mixed
Приложения
application/atom+xml
application/eot
application/font
application/font-sfnt
application/font-woff
application/geo+json
application/graphql+json
application/javascript
application/javascript-binast
application/json
application/ld+json
application/manifest+json
application/opentype
application/otf
application/rss+xml
application/truetype
application/ttf
application/vnd.api+json
application/vnd.ms-fontobject
application/wasm
application/x-font-opentype
application/x-font-truetype
application/x-font-ttf
application/x-httpd-cgi
application/x-javascript
application/x-opentype
application/x-otf
application/x-perl
application/x-protobuf
application/x-ttf
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
Text-based
text/cache-manifest
text/css
text/html
text/javascript
text/js
text/plain
text/richtext
text/x-component
text/x-java-source
text/x-markdown
text/x-script
text/xml
Настройка сжатия поресурсно
Кастомная конфигурация
Чтобы настроить конфигурацию сжатия для конкретного ресурса, перейдите в раздел Anycast CDN Resources пользовательской панели.
В Списке ресурсов кликните по соответствующей строке, чтобы перейти на страницу этого ресурса, как показано ниже.
Перейдите на вкладку Preferences tab и до самого низа, где в специальном разделе можно настроить параметры сжатия контента.
Установите галочки, чтобы применять определенные методы сжатия, либо снимите их, чтобы отключить неиспользуемые. Нажмите Сохранить изменения, чтобы подтвердить и сохранить новую конфигурацию компрессии файлов.
Конфигурация по умолчанию
Ниже приведена стандартная и рекомендуемая нами в большинстве случаев конфигурация:
Если вы не настроите сжатие ресурсов кастомным образом, в CDN будет применяться такая логика сжатия файлов:
Сжатие на Edge-сервере не выбрано, потому сжатие контента будет происходить на исходном сервере (ориджине).
Метод сжатия zstd не выбран (поскольку все еще считается экспериментальным), поэтому применяться он не будет.
Включены оба метода gzip и Brotli, то есть будут применяться оба алгоритма. Все поддерживающие клиенты будут получать контент, сжатый с помощью Brotli. CDN будет отдавать файлы, сжатые с помощью gzip, браузерам, скриптам, ботам или приложениям, которые не поддерживают Brotli.
По умолчанию, сжатие на edge-сервере отключено.
Сжатие контента может осуществляться CDN в двух точках:
Сжатие на edge-сервере
Сжатие на edge-серверах (на CDN-нодах) осуществляется до кэширования вашего контента. Благодаря єтому каждая нода (или shield-нода, если включена функция Origin Shield) хранит уже сжатую копию вашего файла.
Если ваш origin-сервер справляется с нагрузкой компрессии файлов для CDN, мы все-же рекомендуем не использовать сжатие на edge-серверах. Если вычислительная мощность вашего origin-сервера позволяет второй подход - он оптимален в большинстве случаев и сводит к минимуму обработку ваших файлов на стороне CDN.
Сжатие на origin-сервере
Origin - это ваш сервер, физический или виртуальный, на котором размещены исходные файлы для раздачи через CDN.
Сжатие на origin-серверах происходит на вашем исходном сервере и снижает нагрузку на узлы CDN, но увеличивает использование бендвича между ориджином и CDN.
В случае, если показатели отдачи существенно различаются для разных ресурсов при таком подходе, попробуйте включить сжатие на edge-сервере для ресурсов с наиболее обьемными файлами (в настройках конкретного ресурса), оставив сжатие на origin-серверах по умолчанию для большинства ресурсов.
Такой подход наиболее эффективен для снижения потребления бендвича между ориджином и CDN-нодами и оптимизации затрат.
Методы сжатия на edge-сервере
При включенном сжатии на edge-сервере, сжатые на origin-сервере не происходит.
Все современные браузеры поддерживают сжатие контента. Для сжатия на CDN-нодах доступны следующие методы:
gzip
gzip это хорошо зарекомендовавший себя алгоритм сжатия на основе Zlib. Он поддерживается наибольшим количеством различных веб-клиентов.
Выбирайте gzip для максимальной совместимости, как наиболее широко поддерживаемый метод. Хотя он и предлагает более низкие коэффициенты сжатия, чем Brotli, - gzip обеспечивает максимальный охват аудитории и совместим даже с устаревшими веб-клиентами и системами.
Brotli - это свежий и эффективный метод сжатия с широкой поддержкой современных веб-клиентов. Он обеспечивает лучшие коэффициенты сжатия, чем gzip, при этом давая вам широкую поддержку разных браузеров.
Используйте Brotli для оптимизации сжатия text-based контента, как HTML, CSS и JavaScript.
zstd
Алгоритм Zstandard, известный как zstd, является быстрым и продвинутым методом сжатия, который пока считается экспериментальным (по умолчанию у нас отключен).
Попробуйте активировать zstd там, где вам нужна скоростная компрессия, особенно для динамического или часто обновляемого контента. Метод дает чудесный баланс между скоростью и коэфициентом сжатия.
Fallback-логика
Если запрашивающий клиент (браузер, скрипт, бот или приложение) не поддерживает выбранный вами алгоритм сжатия, CDN будет отдавать контент, сжатый с использованием другого поддерживаемого метода. Приоритет альтернативных методов в случае несовместимости таков: Brotli → zstd → gzip.
Если клиент не поддерживает сжатие вообще, контент закешируется несжатым и будет роздан соответственно.
Отдельное кеширование сжатого контента
Независимо от того, где происходит сжатие файлов, кэширование должно учитывать различные методы сжатия. Подход Cache Compressed Content Separately (Отдельное кеширование сжатого контента, CCCS) означает, что контент, сжатый с помощью различных методов, хранится в виде отдельных объектов кэша. Алгоритмы сжатия при CCCS те же, что и методы сжатия на edge-ноде.
При включенном сжатии на edge-ноде, CDN автоматически подгоняет и настройки кеширования.
При выключенном сжатии на edge-ноде, вам нужно вручную настроить кеширование в соответствии с методами, которые поддерживает ваш origin-сервер, во избежание проблем совместимости.
Важно учесть: Если origin-сервер не поддерживает выбранный метод компрессии, CDN придется закешировать несжатый контент, потенциально снижая эффективности использования кеша.
Предназначение хедера Accept-Encoding
Заголовок (хедер) HTTP-запроса - это пара ключ-значение, отправляемая запрашивающим клиентом (например браузером на нашу CDN-ноду) и несущая дополнительную информацию.
Хедер Accept-Encoding, сообщает ноде, какие методы сжатия поддерживает данный запрашивающий клиент. CDN выбирает метод на основе его логики приоритетности и доступности соответствующего файла в кеше.
При включенном сжатии на edge-сервере, CDN не передаст хедер Accept-Encoding на ваш origin-сервер, чтобы ориджин не производил сжатие вовсе. Это снижает загрузку CPU ориджина, но также повышает потребление бендвича.
При выключенном сжатии на edge-сервере, CDN определяет метод сжатия, основываясь на том, какой алгоритм поддерживает запрашивающий клиент и на состоянии кеша. При такой настройке, нода передает ориджину только оптимальный и поддерживаемый метод сжатия. Origin-сервер сжимает контент соответственно и CDN кеширует его для раздачи.
Важно учесть: Заголовок Accept-Encoding также повлияет на путь к файлу в кеше (cache key) и соответственно, может понизить хитрейт (у одного ресурса возникнет несколько вариантов ключа, и вместо одной копии, CDN закеширует много «почти одинаковых» файлов, из-за такого дробления файлы будут чаще вытесняться из кеша и больше запросов будуе проскакивать на ориджин).
Прогрев сжатого контента
Функция прогрева (предварительного кеширования) сжатого контента доступна через API. Конфигурация сжатия влияет на прогрев, ее нужно наладить в API соответственно.
Поддерживаемые для прогрева алгоритмы те же, что и для сжатия на edge-ноде и для CCCS, также добавлена опция Raw (несжатого) прогрева.
Прогрев несжатого контента в реальных условиях в основном бесполезен, поскольку современные клиенты (браузеры, приложения, боты) дублируют этот функционал на своей стороне.
Режимы сжатия
Режимы компрессии, при настрйке через пользовательскую панель, будь то автоматически установленные или выбранные вручную, обеспечивают правильное сочетание сжатия и кэширования контента для оптимальной отдачи.
Автоматический (режим по умолчанию)
Вы не указали и не исключили никаких методов сжатия через пользовательскую панель и/или API; CDN использует все доступные CCCS-методы. Метод raw применяется только если не разрешен ни один алгоритм сжатия.
Ручная настройка
Вы выбрали конкретные методы сжатия, которые и используются CDN, в логике CCCS и/или raw.
Более подробная информация об API-интеграции прогрева кеша, ознакомьтесь с нашей API-документацией.