我一直在寻找使我的网站加载更快的方法,其中一种我想要探索的方式是更多地使用Cloudfront。
由于Cloudfront最初并不是作为自定义源CDN设计的,也不支持gzip压缩,因此迄今为止,我一直在使用它来托管所有的图片,这些图片通过其Cloudfront cname在我的网站代码中引用,并且使用far-futures头进行优化。
另一方面,CSS和JavaScript文件则托管在我的自己的服务器上,因为直到现在我一直认为它们不能从Cloudfront服务中以gzip格式提供,并且gzip压缩(约75%)带来的性能提升比使用CDN(约50%)要大:Amazon S3(因此也包括Cloudfront)无法通过使用浏览器发送的HTTP Accept-Encoding头来标准地提供gzip压缩内容,则无法动态压缩和服务组件。
因此,直到现在我一直认为必须在两个选择之间做出选择:
将所有资产移动到Amazon CloudFront并放弃GZipping;
保留组件自托管,并配置我们的服务器以检测输入请求并根据需要执行即时GZip压缩,这是我迄今为止选择的做法。
虽然曾经有解决此问题的方法,但实际上基本上这些方法都无法解决。 [链接]。
现在,似乎Amazon Cloudfront支持自定义源,并且如果您使用自定义源,则现在可以使用标准的HTTP Accept-Encoding方法提供gzip压缩内容。 [链接]。
到目前为止,我还没有能够在我的服务器上实现这个新功能。我找到的唯一详细说明这个更改的博客文章似乎暗示只有选择自定义源(工作区变通方法除外,我不想使用)才能启用gzip压缩,而我宁愿不这样做:我觉得从我的Cloudfront服务器托管相应的文件并从那里链接更简单。尽管我仔细阅读了文档,但我不知道:
新功能是否意味着文件必须通过自定义源托管在我的域服务器上,并且如果是这样,哪些代码设置会实现这一点;
如何配置CSS和JavaScript头文件以确保它们从Cloudfront提供Gzip压缩。