为什么这个文件没有缓存在浏览器中?我的 headers 怎么了?

Why is this file not cached in the browser? What's wrong with my headers?

我正在使用 Cloudfront(前面有 Cloudflare)来提供以下文件:

https://app.astrobin.com/assets/i18n/en.po?version=1623337803841

这些是撰写本文时的回复 header:

accept-ranges: bytes
age: 2825
cf-cache-status: DYNAMIC
cf-ray: 65d3e1df6fe70f9a-VIE
cf-request-id: 0a984b7fa400000f9ac0139000000001
content-length: 6626
content-type: application/octet-stream
date: Thu, 10 Jun 2021 16:12:37 GMT
etag: "6336cef3a9da96c3c432813762cd7d70"
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
last-modified: Thu, 10 Jun 2021 15:17:27 GMT
nel: {"report_to":"cf-nel","max_age":604800}
report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v2?s=TipuJtVNh6YvmqS4rzXv5mtQ%2BUKVHBvok88InKPm%2FNGqK13b2EX1%2BxMEuMfCgp4qslhW0xc1qeIzX1xpUzNW5u5rC8Di3lsb4zNqaoN0zhhH5E3wbizW%2FjlbqD5C"}],"group":"cf-nel","max_age":604800}
server: cloudflare
via: 1.1 3d4555926457517be3e728d2175d92a3.cloudfront.net (CloudFront)
x-amz-cf-id: MfDo647EBTxmyo7TZ-sseALca4bmzBPdPPnuiesvGjNnlkgqLzgwDA==
x-amz-cf-pop: VIE50-C2
x-cache: Hit from cloudfront

下图是我对该文件的 Cloudfront“行为”规则:

我在 Cloudflare 中没有此文件的任何页面规则。

出于测试目的,我正在对该文件执行多个请求,但从未从 Chrome 的磁盘或内存缓存中提取该文件。它总是进入网络。

正如您从请求 URL 中看到的那样,出于 cache-busting 的目的,我将最后一次已知修改的时间戳附加到此文件中,因此我希望将文件缓存在浏览器。

我错过了什么? 谢谢!

浏览器缓存由源服务器响应中的缓存headers(即Cache-ControlExpires)决定。但是你列出的响应没有这样的header,所以由浏览器决定资源被认为是新鲜的时间。

如果您希望浏览器使用特定的缓存策略,您应该在响应中添加 Cache-Control header。