INTEGRITY Документация

Сжатие контента

Cloudflare сжимает контент двумя способами: между Cloudflare и посетителями вашего сайта, а также между Cloudflare и вашим источником.

Сжатие между Cloudflare и посетителями сайта

Помимо Cloudflare поведение кеширования по умолчанию, Cloudflare поддерживает сжатие Gzip, Brotli и Zstandard при доставке контента посетителям сайта.

Если это поддерживается браузерами посетителей, Cloudflare возвращает ответы, закодированные с помощью Gzip, Brotli или Zstandard, для следующих типов контента:

text/html
text/richtext
text/plain
text/css
text/x-script
text/x-component
text/x-java-source
text/x-markdown
application/javascript
application/x-javascript
text/javascript
text/js
image/x-icon
image/vnd.microsoft.icon
application/x-perl
application/x-httpd-cgi
text/xml
application/xml
application/rss+xml
application/vnd.api+json
application/x-protobuf
application/json
multipart/bag
multipart/mixed
application/xhtml+xml
font/ttf
font/otf
font/x-woff
image/svg+xml
application/vnd.ms-fontobject
application/ttf
application/x-ttf
application/otf
application/x-otf
application/truetype
application/opentype
application/x-opentype
application/font-woff
application/eot
application/font
application/font-sfnt
application/wasm
application/javascript-binast
application/manifest+json
application/ld+json
application/graphql+json
application/geo+json

Глобальная сеть Cloudflare может доставлять контент посетителям сайта с использованием сжатия Gzip, Brotli, Zstandard или вообще без сжатия, в зависимости от:

Для ответов с кодами ошибок Cloudflare сжимает их только в том случае, если код ошибки 403 или 404. Для успешных кодов статуса ответа Cloudflare сжимает ответы только в том случае, если код статуса равен 200. Ответы с другими кодами статуса сжиматься не будут.

Поведение сжатия Cloudflare по умолчанию можно переопределить с помощью Compression Rules.

Обработка заголовка Content-Length

Когда Cloudflare сжимает ответ, отправляемый посетителю сайта, она может опускать Content-Length HTTP-заголовок, чтобы избежать передачи неверных сведений о длине из-за динамических преобразований. Чтобы сохранить Content-Length заголовок, установленный origin-сервером, добавьте cache-control: no-transform к ответу исходного сервера. Эта директива запрещает Cloudflare изменять сжатие ответов, позволяя Content-Length заголовок передавать без изменений. cache-control: no-transform заголовок должен устанавливаться origin-сервером: добавить его в запросах клиента нельзя.


Сжатие контента от исходных серверов до сети Cloudflare

При запросе контента у исходного сервера Cloudflare поддерживает сжатие Brotli, сжатие Gzip или работу без сжатия.

flowchart LR
accTitle: Compressed responses sent from the origin server
accDescr: Cloudflare accepts responses from origin server using Brotli compression, Gzip compression, or no compression.

A[Visitor browser]
B((Cloudflare))
C[(Origin server)]

A -.-> B == "Request<br>Accept-Encoding: br, gzip" ==> C
C == "Response<br>(Brotli / Gzip / No compression)" ==> B -.-> A

style A stroke-dasharray: 5 5
style B stroke: orange,fill: orange,color: black
style C stroke-width: 2px
linkStyle 1,2 stroke-width: 2px
linkStyle 0,3 stroke-width: 1px

Если исходный сервер отвечает на запрос Cloudflare с использованием сжатия Brotli/Gzip, Cloudflare сохранит то же сжатие в ответе, отправляемом посетителю сайта, если:

Обратный прокси Cloudflare также может преобразовывать контент между сжатыми и несжатыми форматами. Cloudflare может получать от вашего сервера источника контент, сжатый с помощью Brotli или Gzip, и отдавать его посетителям без сжатия (или наоборот), независимо от кэширования.

Если вы не хотите, чтобы определённый ответ вашего исходного сервера кодировался с помощью Brotli/Gzip при доставке посетителям сайта, это можно отключить, добавив cache-control: no-transform HTTP-заголовок в ответе от вашего исходного веб-сервера.


Заметки о сквозном сжатии

Повторное сжатие контента из-за динамических преобразований

Даже если на всём пути используется один и тот же алгоритм сжатия (между исходным сервером и Cloudflare, а также между глобальной сетью Cloudflare и посетителем сайта), Cloudflare придётся распаковать ответ и сжать его заново при включении любой из следующих настроек запроса:

Чтобы отключить эти настройки для конкретных путей URI, создайте правило конфигурации.

Заголовок Content-Length

Cloudflare может удалить Content-Length HTTP-заголовок ответов, доставляемых посетителям сайта. Чтобы заголовок сохранялся, добавьте cache-control: no-transform HTTP-заголовок к ответу на исходном сервере.

Методы сжатия по тарифным планам

Между посетителями и Cloudflare

По умолчанию Cloudflare использует для доставки контента перечисленные ниже методы сжатия в зависимости от тарифного плана зоны. Однако фактически применяемое сжатие может также зависеть от того, что запрашивает браузер посетителя через accept-encoding заголовок.

Между Cloudflare и сервером источника

На всех тарифных планах Cloudflare запрашивает контент с сервера-источника, используя accept-encoding: br, gzip заголовок. Это означает, что Cloudflare просит origin отправлять контент, сжатый с использованием Brotli или Gzip, в зависимости от того, какой метод поддерживает origin-сервер.