Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 源站为S3网站的CloudFront不提供Gzip文件_Amazon Web Services_Amazon S3_Gzip_Amazon Cloudfront - Fatal编程技术网

Amazon web services 源站为S3网站的CloudFront不提供Gzip文件

Amazon web services 源站为S3网站的CloudFront不提供Gzip文件,amazon-web-services,amazon-s3,gzip,amazon-cloudfront,Amazon Web Services,Amazon S3,Gzip,Amazon Cloudfront,我已经按照中的所有说明进行了操作,但是gzipping不起作用 我有一个S3存储桶,作为CloudFront用作源的网站 自动压缩对象已启用 我提供的文件具有正确的内容类型,如application/javascript和text/css 这些文件在1000和10000000字节之间 据我所知,S3网站提供的文件具有内容长度 为了确保没有缓存任何内容,我将整个S3存储桶作废,并将文件的更新版本上载到S3 另外,我使用的浏览器Chrome也接受Gzip文件 尽管如此,我还是不能去上班。我已经使

我已经按照中的所有说明进行了操作,但是gzipping不起作用

我有一个S3存储桶,作为CloudFront用作源的网站

  • 自动压缩对象
    已启用
  • 我提供的文件具有正确的内容类型,如
    application/javascript
    text/css
  • 这些文件在1000和10000000字节之间
  • 据我所知,S3网站提供的文件具有
    内容长度
  • 为了确保没有缓存任何内容,我将整个S3存储桶作废,并将文件的更新版本上载到S3
  • 另外,我使用的浏览器Chrome也接受Gzip文件
尽管如此,我还是不能去上班。我已经使包括SSL在内的所有其他功能完美运行,您可以访问以下站点:


如果打开chrome控制台,您会注意到S3提供的所有文件都没有被gzip压缩。唯一的gzip文件(如google字体)是我从其他CDN获取的文件。

我今天遇到了同样的错误,并通过向S3 bucket添加CORS规则解决了这个问题。此规则确保将内容长度头发送到Cloudfront,以便可以压缩内容:

S3>存储桶>权限>CORS配置

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>Authorization</AllowedHeader>
        <AllowedHeader>Content-Length</AllowedHeader>
    </CORSRule>
</CORSConfiguration>


据我所知,这似乎是一个未记录的要求。

我的问题是,我上传的文件专门使用utf-8编码。从文件中:

CloudFront确定文件是否可压缩:

该文件必须是CloudFront压缩的类型

文件大小必须介于1000和10000000字节之间

响应必须包含一个内容长度头,以便CloudFront能够 确定文件大小是否在CloudFront指定的范围内 压缩。如果缺少内容长度头,CloudFront将不会 压缩文件

响应不得包含内容编码标题


由于Cloudfront现在只接受JSON,您必须粘贴以下内容:

[
{
“允许的标题”:[
“授权”,
“内容长度”
],
“允许的方法”:[
“得到”
],
“允许的来源”:[
"*"
],
“公开负责人”:[],
“最大秒数”:3000
}
]

我已经尝试了以上所有方法,但CloudFront仍然没有压缩我的S3存储桶内容


我的问题是,我已经有一个已禁用压缩功能的Cloudfront发行版,我后来打开了它。这在某种程度上不允许考虑压缩。经过许多不成功的解决方法后,我删除了CloudFront发行版,并从一开始就使用压缩功能重新创建了它。这就解决了我的问题。

感谢您分享实际链接——这将使人们更容易发现正在发生的任何事情。您的对象存储在S3中,没有
内容编码:
标题,对吗?这就是他们应该做的。如果您可以访问世界其他地方的系统,您可以尝试
curl-v
,看看通过不同边缘的请求是否有不同的行为。@Michael sqlbot是的,它们只有
内容类型
。我注意到的另一件事是,似乎我的index.html实际上正在被gzip压缩,但这只是碰巧不一致,这让我更加困惑。@Michael sqlbot它开始工作了……估计需要一天左右……”在极少数情况下,当CloudFrontEdge位置异常繁忙时,某些文件可能不会被压缩这是一个新功能,可能是一个非常流行的功能。。。他们可能在您的边缘位置满足了一些临时的意外需求。(也就是说,你正在通过的测试。)“召集”这样的人通常会受到社区的反对。如果您正确地标记了一个问题,专家将看到您的问题。注意:上面的源示例中的内容长度拼写错误(由于编辑少于6个字符,因此不允许我进行修复)。很好!谢谢我的js文件超过10000000字节。有没有办法将js文件压缩到10000000字节以上?谢谢,这是一个非常有用的答案。