web-dev-qa-db-ja.com

cloudflareが両方ともHITであっても、同じ画像の2つの異なるフォーマットを返す理由

Cloudflareでポーランド語をオンにしました。

chrome(OSXではVersion 75.0.3770.142 (Official Build) (64-bit))でイメージを最初にダウンロードすると、chrome開発コンソールに次の情報が表示されます:

* 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を2回目に取得したのですか?

最初のリクエストでは、ヘッダーは次のようになります。

: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

2番目の要求は単純です。

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
Anthony Kong

ポーランド語はwebp iffを生成することを意味します ブラウザーからのAcceptヘッダーにはWebPが含まれており、圧縮された画像は非可逆または可逆圧縮よりも大幅に小さくなります 。このブログのリンクから、「」も参照してください。URLのファイル拡張子が別の形式を示している場合でも、WebP変換は画像のURLを変更しないことに注意してください。たとえば、WebPに変換された https://example.com/picture.jpg のJPEG画像は、同じURLを保持します。 「Content-Type」HTTPヘッダーは、ブラウザーに画像の実際の形式を通知します。 '

初めて読み込まれたとき(jpg)は、キャッシュ時間が長いことを考えると、おそらくブラウザーのキャッシュからのものでしたが、新しいヘッダーが表示されました。シークレットモードでは、使用できるキャッシュがなかったため、ポーランド語版を採用しました。なぜクライアント側の問題のようにリクエストヘッダーが異なるのかについては、シークレットモードでないときに特定のヘッダーのみを送信するようにいくつかのフラグを変更した可能性があります。

ああ、そしてなぜ言語を追加すると画像が台無しになるのかについて完全に混乱している人にとっては、 ポーランド語は画像のサイズを変更するためのCloudflare機能であり、言語ではありません!

2
LTPCGO