Cloudfront - 为什么这不是 "browser cached"?
Cloudfront - why is this not being "browser cached"?
这是对我的 Javascript 文件的 curl -I
回复:
HTTP/1.1 200 OK
Content-Type: text/javascript
Content-Length: 72640
Connection: keep-alive
Date: Sat, 18 Feb 2017 16:12:06 GMT
Cache-Control: 86400
Last-Modified: Wed, 15 Feb 2017 15:09:28 GMT
ETag: "a6ee06ff5e49a4290bb2aabe5e0f9029"
Server: AmazonS3
Vary: Accept-Encoding
Age: 1173
X-Cache: Hit from cloudfront
Via: 1.1 3b17302562f1709d8b6c9f7be1.cloudfront.net (CloudFront)
我可以在那里看到 Cache-Control
标签。不确定 Vary
和 ETag
在做什么,但就这样吧。这是否以某种方式指定用户的浏览器不缓存此文件?为什么 Pingdom 或 Goog PageSpeed 不将其识别为浏览器可缓存文件?
您的 Cache-Control
header 存在,但该值实际上无效。正确的格式如下所示:
Cache-Control: max-age=86400
数字本身没有意义。
ETag:
是实体标签——一个不透明的值,唯一标识给定 URL 的当前内容。如果内容发生变化,ETag 也会发生变化。具有缓存副本的浏览器 可以 将此值用于后续请求,通过发送 If-None-Match:
请求 return 请求服务器仅 return 内容不同=31=],包括 last-seen ETag。
Vary:
告诉浏览器对请求的某些更改可能会产生不同的响应。与浏览器不同,除非您指定 --compressed
选项,否则 curl 不会宣传其支持 gzip 有效负载的能力。在调用 curl 时添加该选项会触发向请求添加 Accept-Encoding: gzip
,如果您在 CloudFront 中启用了该选项,则 可能 会触发响应被压缩。
这是对我的 Javascript 文件的 curl -I
回复:
HTTP/1.1 200 OK
Content-Type: text/javascript
Content-Length: 72640
Connection: keep-alive
Date: Sat, 18 Feb 2017 16:12:06 GMT
Cache-Control: 86400
Last-Modified: Wed, 15 Feb 2017 15:09:28 GMT
ETag: "a6ee06ff5e49a4290bb2aabe5e0f9029"
Server: AmazonS3
Vary: Accept-Encoding
Age: 1173
X-Cache: Hit from cloudfront
Via: 1.1 3b17302562f1709d8b6c9f7be1.cloudfront.net (CloudFront)
我可以在那里看到 Cache-Control
标签。不确定 Vary
和 ETag
在做什么,但就这样吧。这是否以某种方式指定用户的浏览器不缓存此文件?为什么 Pingdom 或 Goog PageSpeed 不将其识别为浏览器可缓存文件?
您的 Cache-Control
header 存在,但该值实际上无效。正确的格式如下所示:
Cache-Control: max-age=86400
数字本身没有意义。
ETag:
是实体标签——一个不透明的值,唯一标识给定 URL 的当前内容。如果内容发生变化,ETag 也会发生变化。具有缓存副本的浏览器 可以 将此值用于后续请求,通过发送 If-None-Match:
请求 return 请求服务器仅 return 内容不同=31=],包括 last-seen ETag。
Vary:
告诉浏览器对请求的某些更改可能会产生不同的响应。与浏览器不同,除非您指定 --compressed
选项,否则 curl 不会宣传其支持 gzip 有效负载的能力。在调用 curl 时添加该选项会触发向请求添加 Accept-Encoding: gzip
,如果您在 CloudFront 中启用了该选项,则 可能 会触发响应被压缩。