Cloudflare
為什麼即使兩者都是 HIT,cloudflare 也會返回兩種不同格式的相同圖像
我在 Cloudflare 中打開了波蘭語。
當圖像首次在 chrome 中下載(
Version 75.0.3770.142 (Official Build) (64-bit)
在 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
為什麼不同的圖像類型?
如果來自瀏覽器的 Accept 標頭包含 WebP 並且壓縮圖像明顯小於有損或無損壓縮,則波蘭語旨在生成 webp 。從此部落格連結中,還可以看到’請注意,WebP 轉換不會更改圖像的 URL,即使 URL 中的文件副檔名意味著不同的格式。例如,已轉換為 WebP的位於https://example.com/picture.jpg的 JPEG 圖像仍具有相同的 URL。“Content-Type”HTTP 標頭告訴瀏覽器圖像的真實格式。'
第一次載入(jpg)時,它可能來自瀏覽器自己的記憶體,因為可用的記憶體時間很長,但它顯示了新的標題。在隱身模式下,它沒有可用的記憶體,因此採用了波蘭語版本。至於為什麼請求標頭不同,這似乎是客戶端問題,也許您已經更改了一些標誌以僅在不隱身時發送某些標頭?
哦,而且,對於任何對為什麼添加語言會弄亂圖像感到完全困惑的人來說,波蘭語是用於調整圖像大小的 Cloudflare 功能,而不是語言!