如何添加" Accept-Encoding"标题到我的CloudFront分配?

时间:2017-11-15 12:41:12

标签: amazon-s3 compression gzip amazon-cloudfront

我打开CloudFront仪表板并单击分发ID,然后单击Origin选项卡并单击,选择默认原点,然后单击Edit。 试图添加" Accept-Encoding"在'标题名称'在自定义源标题下,将其值设置为" 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)

通过CloudFront启用gzip压缩可以做些什么?

1 个答案:

答案 0 :(得分:6)

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

  

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

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

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

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

如果您要您的来源来压缩文件,则设置取决于在该来源上运行的服务器。 服务器应该设置为使用Content-Encoding: gzip标头将gzip压缩的内容提供给CloudFront,因此CloudFront不会对其进行压缩。 这些是基本准则,但具体设置取决于您的具体配置。