Amazon web services 为什么CloudFront可以';压缩前不保存ETag?
Amazon web services 为什么CloudFront可以';压缩前不保存ETag?,amazon-web-services,amazon-cloudfront,cdn,Amazon Web Services,Amazon Cloudfront,Cdn,CloudFront说明: 如果将CloudFront配置为压缩内容,CloudFront将从压缩的文件中删除ETag响应头。当ETag头存在时,CloudFront和您的源站可以使用它来确定CloudFront edge缓存中的文件版本是否与源站服务器上的版本相同。但是,经过压缩后,这两个版本不再相同。因此,当压缩文件过期并且CloudFront将另一个请求转发给您的源站时,您的源站总是将文件返回到CloudFront,而不是HTTP状态代码304(未修改) 为什么不CloudFront在压缩
CloudFront
说明:
如果将CloudFront配置为压缩内容,CloudFront将从压缩的文件中删除ETag响应头。当ETag头存在时,CloudFront和您的源站可以使用它来确定CloudFront edge缓存中的文件版本是否与源站服务器上的版本相同。但是,经过压缩后,这两个版本不再相同。因此,当压缩文件过期并且CloudFront将另一个请求转发给您的源站时,您的源站总是将文件返回到CloudFront,而不是HTTP状态代码304(未修改)
为什么不
CloudFront
在压缩之前保存文件的ETag
,并将其用于原始请求,以允许使用304代码?文档的相应部分已更新
如果您的源站包含一个强大的ETag
(例如S3),CloudFront将压缩内容(如果它被配置为压缩内容,例如文本或json),它将按照规范的要求(参见第13.3.3节)削弱ETag
(例如“foobar”
变成W/“foobar”
)并将其传递给观众
可以存储它并在以后用于条件请求(如果没有匹配:W/“foobar”
)
ETag收割台
当源站的未压缩对象包含有效的强ETag HTTP头时,CloudFront将转换强ETag头
值转换为弱ETag,并将弱ETag值返回给查看器。
查看者可以存储弱ETag值并使用它发送条件消息
具有If-None的请求与HTTP头匹配。这让观众,,
CloudFront和处理压缩和未压缩
对象的版本在语义上是等价的,这减少了
不必要的数据传输
作为一个建议,很明显,如果ETag被压缩,那么在cloudfront中保存它是没有用的。因此,如果应该使用ETag来优化缓存,则不应该启用cloudfront缓存。似乎有两种不同的方法可以实现相同的目标。