我在 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 功能,而不是语言!