← Cloudflare Cache / cache / advanced-configuration
Vary for images
Vary HTTP заголовок ответа сообщает Cloudflare, что источник может отдавать разные версии одного и того же ресурса в зависимости от заголовков запроса. Для изображений это позволяет вашему источнику отдавать современные форматы, такие как WebP или AVIF, браузерам, которые их поддерживают, продолжая отдавать JPEG или PNG остальным.
Когда Cloudflare получает ответ с вариантами изображения, каждый вариант кэшируется отдельно. Последующие запросы от браузеров с теми же предпочтениями по формату изображения обслуживаются прямо из кэша без обращения к исходному серверу.
Принцип работы Vary for Images основан на анализе Accept заголовок в каждом запросе, чтобы определить, какой формат изображения поддерживает браузер, а затем отдаёт подходящий кешированный вариант.
Vary for images доступен для клиентов на тарифах Pro, Business и Enterprise.
Доступность
| Free | Pro | Business | Enterprise | |
|---|---|---|---|---|
| Доступность | Нет | Да | Да | Да |
Расширения файлов
Для изображений с перечисленными ниже расширениями файлов можно использовать vary, если исходный сервер отправляет Vary: Accept заголовок ответа. Если сервер источника отправляет Vary: Accept но не отдаёт заданный вариант, ответ не кешируется и отображает BYPASS в статусе кэша в заголовке ответа. Кроме того, необходимо настроить список типов вариантов, которые источник отдаёт для каждого расширения, чтобы Cloudflare мог определить, какой вариант отдать, не обращаясь к исходному серверу.
Расширения файлов с включённым варьированием
- .avif
- .bmp
- .gif
- .jpg
- .jpeg
- .jp2
- .png
- .tif
- .tiff
- .webp
Включите vary for images
Vary for Images включается через API Cloudflare путем создания правила variants rule. В приведенных ниже примерах показано, как отдавать варианты в форматах JPEG, WebP и AVIF для .jpeg и .jpg расширений.
Создание правила вариантов
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Zone Settings WriteZone Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/cache/variants" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"value": {
"jpeg": [
"image/webp",
"image/avif"
],
"jpg": [
"image/webp",
"image/avif"
]
}
}'Измените, чтобы разрешить только варианты WebP
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Zone Settings WriteZone Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/cache/variants" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"value": {
"jpeg": [
"image/webp"
],
"jpg": [
"image/webp"
]
}
}'Удалите правило
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Zone Settings WriteZone Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/cache/variants" \
--request DELETE \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Получение правила
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Zone Settings WriteZone Settings ReadZone ReadZone Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/cache/variants" \
--request GET \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Чтобы узнать больше об очистке кеша вариативных изображений, см. Очистка вариантов изображений.
Ограничения
- Чтобы Vary для изображений работал, URL изображения должен содержать расширение файла в пути, а не в строке запроса. Например, URL
https://example.com/image.jpgсовместим, ноhttps://example.com/index.php?file=image.jpgнесовместим. - Ваш источник должен возвращать тип изображения, соответствующий расширению файла в URL, когда HTTP-клиент не отправляет
Acceptзаголовок илиAccept: */*заголовок. В противном случае вы увидитеCF-Cache-Status: BYPASSв заголовках HTTP-ответа.