更新
正如Ryan Parman (+1) 暗示的那样,在压缩(和/或优化)方面有两个不同的层在起作用,到目前为止,在这个讨论中似乎有点混杂:
根据您的问题标题,我在下面的初始答案已解决了使用 Cloudfront的无损压缩问题,该标题与HTTP 压缩层有关:
HTTP 压缩是一种可以内置到Web 服务器和Web 客户端中的功能,以更好地利用可用带宽,并在两者之间提供更快的传输速度。
[...] 数据在从服务器发送之前被压缩:兼容的浏览器会在下载正确格式之前向服务器宣布支持哪些方法;不支持兼容压缩方法的浏览器将下载未压缩的数据。[...]
也就是说,压缩/解压缩操作通常由服务器和客户端自动处理,以优化带宽使用和传输性能 - 与 CloudFront 不同的是,它的服务器实现确实不像大多数 Web 服务器那样自动处理压缩,这就是为什么如果需要,您需要自己准备一个压缩表示。
- 这种压缩最适用于 HTML、CSS 和 JavaScript 等文本文件,但对于已经自行压缩的二进制数据格式(如 ZIP 和其他预打包档案和 esp)则无用(甚至有害)。图像格式,如 PNG 和 JPEG。
现在,您的问题正文讨论了一个不同的压缩/优化层,即有损JPEG_compression和特别是Lossless_editing以及通过jpegoptim进行优化- 这与 HTTP 服务器和客户端如何处理文件无关,而只是压缩/优化这些文件本身可以更好地匹配特定用例(例如 Web 或移动浏览)中的性能限制,例如,当仅在网页上查看时,传输原始大小的数码照片没有任何意义。
- 迄今为止,这种压缩/优化很少由网络服务器本身提供,尽管这些天像谷歌的mod_pagespeed这样的显着努力是可用的 - 通常是网页设计师的责任,准备适当的资产,理想地优化并有选择地通过CSS 媒体查询传递给预期的目标受众。
初步答案
AWS CloudFront能够Serving Compressed Files,但是,这是字面意思:
Amazon CloudFront 可以提供来自源服务器的压缩和未压缩文件。CloudFront 依赖源服务器来压缩文件或提供可用的压缩和未压缩版本的文件;CloudFront 不代表源服务器执行压缩。有了一些资格,CloudFront 还可以提供来自 Amazon S3 的压缩内容。有关详细信息,请参阅选择要压缩的文件类型。[强调我的]
也就是说,您需要自己提供压缩版本,但是一旦设置好,这对客户来说是透明的——请注意,内容必须使用 gzip 压缩;不支持其他压缩算法:
[...] 如果请求标头包含其他内容编码,例如 deflate 或 sdch,CloudFront 会在将请求转发到源服务器之前将其删除。如果 Accept-Encoding 字段中缺少 gzip,则 CloudFront 仅提供文件的未压缩版本。[...]
CloudFront 如何提供来自自定义源的压缩内容和提供来自 Amazon S3 的压缩文件中概述了有关要求和流程的详细信息。