如何将“ Accept-Encoding”标头添加到CloudFront分配中?

Cod*_*ker 4 compression gzip amazon-s3 amazon-cloudfront

我打开了CloudFront仪表板,单击分发ID,然后单击“原始”选项卡,然后单击,选择了默认原始,然后单击“编辑”。试图在“自定义原始标题”下的“标题名称”中添加“接受编码”,并将其值设置为“ gzip”,但显示以下错误:

com.amazonaws.services.cloudfront.model.InvalidArgumentException: The parameter HeaderValue for Accept-Encoding is not empty. (Service: AmazonCloudFront; Status Code: 400; Error Code: InvalidArgument; Request ID: 05685bb6-ca02-11e7-8a62-0b7037d34a58)
Run Code Online (Sandbox Code Playgroud)

如何通过CloudFront启用gzip压缩?

Bra*_*aca 7

您无法将CloudFront配置为基于Accept-Encoding标头进行缓存。从aws docs引用:

您可以将CloudFront配置为根据除以下内容之外的任何请求标头的值进行缓存:

  • 接受编码,
  • 连接,
  • ...

但是,您可以配置CloudFront压缩支持的 文件类型。在CloudFront控制台“ 自动压缩对象 ”中,选择“ 是”

注意:仅压缩大小在1,000到10,000,000字节之间的文件。当您使用S3或任何其他自定义来源时,CloudFront必须获取带有Content-Length标头的响应,以便它可以确定文件的大小是否在CloudFront压缩的范围内。如果使用的是S3,请转到CORS配置,然后将Content-Length标头添加到允许的标头列表中。

如果希望原始服务器压缩文件,则设置取决于在该原始服务器上运行的服务器。应该设置服务器以通过Content-Encoding: gzip标头将gzip 压缩的内容提供给CloudFront ,因此CloudFront不会压缩它。这些是基本准则,但具体设置取决于您的具体配置。