Почему cloudflare возвращает два разных формата одних и тех же изображений, даже когда оба HIT

Я включил польский язык в Cloudflare.

При первой загрузке образа в Chrome ( Версия 75.0.3770.142 (Официальная сборка) (64-бит) в OSX), Консоль chrome dev показывает следующую информацию:

* age: 12286
* cache-control: public, max-age=31556926
* cf-bgj: imgq:85
* cf-cache-status: HIT
* cf-polished: degrade=85, origSize=25843, status=vary_header_present
* cf-ray: 4fe67aba4d6b6549-SYD
* content-length: 5951
* content-type: image/jpeg
* date: Tue, 30 Jul 2019 09:59:21 GMT
* etag: "9314546c183b5befa64e265c89dc981f"
* expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
* expires: Wed, 29 Jul 2020 15:48:07 GMT
* last-modified: Thu, 11 Jul 2019 06:18:02 GMT
* server: cloudflare
* status: 200

Затем, когда я получаю доступ к тому же изображению в той же версии, но в режиме инкогнито, я получаю следующее:

* age: 21
* cache-control: public, max-age=31556926
* cf-bgj: imgq:85
* cf-cache-status: HIT
* cf-polished: qual=85, origFmt=jpeg, origSize=25843
* cf-ray: 4fe68b808803da4a-SYD
* content-disposition: inline; filename="image.webp"
* content-length: 3764
* content-type: image/webp
* date: Tue, 30 Jul 2019 10:10:49 GMT
* etag: "9314546c183b5befa64e265c89dc981f"
* expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
* expires: Wed, 29 Jul 2020 15:59:35 GMT
* last-modified: Thu, 11 Jul 2019 06:18:02 GMT
* server: cloudflare
* status: 200

Я не понимаю: если оба доступа HIT (т.е. - это кэшированные изображения в CDN), почему я получил webp второй раз?

В моем первом запросе заголовок выглядит так:

:authority: public.my-server.com
:method: GET
:path: /image.jpg
:scheme: https
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
accept-encoding: gzip, deflate, br
accept-language: en-GB,en-US;q=0.9,en;q=0.8,zh-TW;q=0.7,zh-CN;q=0.6,zh;q=0.5
cache-control: no-cache
cookie: __cfduid=xxxxx
pragma: no-cache
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36

Второй запрос просто:

Origin: https://public.my-server.com
Referer: https://public.my-server.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36

Почему разные типы изображений?

3
задан 30 July 2019 в 13:23
1 ответ

Polish предназначен для генерации webp, если заголовок Accept из браузера включает WebP, а сжатое изображение значительно меньше, чем сжатие с потерями или без потерь . Из этой ссылки в блоге также см. « Обратите внимание, что преобразование WebP не меняет URL-адреса изображений, даже если расширение файла в URL-адресе подразумевает другой формат. Например, изображение JPEG по адресу https://example.com/picture.jpg , преобразованное в WebP, по-прежнему будет иметь тот же URL. HTTP-заголовок Content-Type сообщает браузеру истинный формат изображения. '

При первой загрузке (jpg) оно, вероятно, было из собственного кеша вашего браузера, учитывая длительное время кеширования , но он показал новые заголовки. В режиме инкогнито у него не было доступного кеша, поэтому взял польскую версию. Что касается того, почему заголовки запросов разные, это похоже на проблему на стороне клиента, возможно, вы изменили некоторые флаги, чтобы отправлять только определенные заголовки, когда не в режиме инкогнито?

Да, и для тех, кто совершенно сбит с толку, зачем добавлять язык может испортить изображения, Польский - это функция Cloudflare для изменения размера изображений, а не язык!

2
ответ дан 3 December 2019 в 06:53

Теги

Похожие вопросы