← Speed / speed / optimization / content
Сжатие контента
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 или вообще без сжатия, в зависимости от:
- Значения, которые посетители указывают в
accept-encodingзаголовок запроса. - Ваш тарифный план Cloudflare.
- Любой настроенный правило сжатия который соответствует входящим запросам.
Для ответов с кодами ошибок 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 сохранит то же сжатие в ответе, отправляемом посетителю сайта, если:
- Вы указываете
content-encodingзаголовок в ответе вашего сервера с указанием используемого сжатия (brилиgzip). - Браузер (или клиент) посетителя поддерживает этот алгоритм сжатия.
- Вы не включаете функции Cloudflare, изменяющие содержимое ответа (см. Заметки о сквозном сжатии подробнее).
Обратный прокси Cloudflare также может преобразовывать контент между сжатыми и несжатыми форматами. Cloudflare может получать от вашего сервера источника контент, сжатый с помощью Brotli или Gzip, и отдавать его посетителям без сжатия (или наоборот), независимо от кэширования.
Если вы не хотите, чтобы определённый ответ вашего исходного сервера кодировался с помощью Brotli/Gzip при доставке посетителям сайта, это можно отключить, добавив cache-control: no-transform HTTP-заголовок в ответе от вашего исходного веб-сервера.
Заметки о сквозном сжатии
Повторное сжатие контента из-за динамических преобразований
Даже если на всём пути используется один и тот же алгоритм сжатия (между исходным сервером и Cloudflare, а также между глобальной сетью Cloudflare и посетителем сайта), Cloudflare придётся распаковать ответ и сжать его заново при включении любой из следующих настроек запроса:
- Automatic HTTPS Rewrites
- Cloudflare Fonts
- Email Address Obfuscation
- Polish
- Rocket Loader
- JavaScript detections
- RUM
Чтобы отключить эти настройки для конкретных путей URI, создайте правило конфигурации.
Заголовок Content-Length
Cloudflare может удалить Content-Length HTTP-заголовок ответов, доставляемых посетителям сайта. Чтобы заголовок сохранялся, добавьте cache-control: no-transform HTTP-заголовок к ответу на исходном сервере.
Методы сжатия по тарифным планам
Между посетителями и Cloudflare
По умолчанию Cloudflare использует для доставки контента перечисленные ниже методы сжатия в зависимости от тарифного плана зоны. Однако фактически применяемое сжатие может также зависеть от того, что запрашивает браузер посетителя через accept-encoding заголовок.
- План Free: по умолчанию контент сжимается с помощью Zstandard.
- Тарифные планы Pro и Business: по умолчанию контент сжимается с помощью Brotli.
- План Enterprise: по умолчанию контент сжимается с помощью Gzip.
Между Cloudflare и сервером источника
На всех тарифных планах Cloudflare запрашивает контент с сервера-источника, используя accept-encoding: br, gzip заголовок. Это означает, что Cloudflare просит origin отправлять контент, сжатый с использованием Brotli или Gzip, в зависимости от того, какой метод поддерживает origin-сервер.