是否可以使用Cloudfront进行无损压缩?

时间:2014-06-26 21:47:57

标签: amazon-web-services amazon-s3 amazon-cloudfront lossless-compression

我正在运行一个城市景观和自然摄影网站,其中包含大量50kb-2mb的图像。我已经使用批量照片编辑器将它们缩小了尺寸,这样我就不会在图像中失去更多的质量而不会让它们变得太粗糙。

Google页面洞察建议无损压缩,我正在试图弄清楚如何解决这个问题。这些特定映像位于s3存储桶中,由AWS cloudfront提供服务

无损压缩https://d339oe4gm47j4m.cloudfront.net/bw107.jpg可以节省57.6KiB(减少38%)。 无损压缩https://luminoto-misc.s3-us-west-2.amazonaws.com/bob_horsch.jpg可以节省40.6KiB(减少42%)。 ......还有一百多个。

Cloudfront可以在将映像作为服务器到客户端之前进行压缩吗?或者我是否必须执行其他类型的压缩,然后将每个文件重新上载到新的s3存储桶。我正在寻找一个解决方案,其中cloudfront将会这样做。

我已经四处寻找,但还没有找到明确的答案。

谢谢, 杰夫

3 个答案:

答案 0 :(得分:3)

更新

隐含地pointed out by Ryan Parman(+ 1),在压缩(和/或优化)方面有两个不同的层正在进行中,到目前为止在这个讨论中似乎有点混淆:

我的初步答案已根据您的问题标题解决了使用Cloudfront 的无损压缩问题,该问题与HTTP compression图层有关:

  

HTTP压缩是一种可以内置到web serversweb clients中的功能,可以更好地利用可用带宽,并在两者之间提供更高的传输速度。

     

[...]数据在从服务器发送之前是compressed:兼容的浏览器会在下载正确的格式之前宣布服务器支持哪些方法;不支持兼容压缩方法的浏览器将下载未压缩的数据。 [...]

也就是说,压缩/解压缩操作通常由服务器和客户端自动处理,以优化带宽使用和传输性能 - 与CloudFront的区别在于,其服务器实现确实无法自动处理压缩与大多数Web服务器一样,这就是您需要自己准备压缩表示的原因。

  • 这种压缩最适用于HTML,CSS和JavaScript等文本文件,但对于已经自己压缩的二进制数据格式(如ZIP和其他预先打包的存档)并不是有用的(甚至是有害的) ESP。图像格式,如PNG和JPEG。

现在,您的问题正在讨论不同的压缩/优化层,即有损JPEG_compression,特别是Lossless_editing以及通过jpegoptim进行优化 - 这与此无关HTTP服务器和客户端如何处理文件,而不仅仅是压缩/优化文件本身,以更好地匹配特定用例(如Web或移动浏览)中的性能限制,其中原始大小的数字照片的传输不会如果只是在网页上查看,那就没有任何意义。

  • 这种压缩/优化是迄今为止网络服务器本身很少提供的压缩/优化,尽管像Google mod_pagespeed这样的着名努力现在已经可用 - 通常它是网络的责任设计师准备适当的资产,理想情况下通过CSS Media queries优化并有选择地交付给预期的目标受众。

初步答复

AWS CloudFront能够Serving Compressed Files但是,这可以从字面上理解:

  

Amazon CloudFront可以同时提供压缩文件和未压缩文件   来自原始服务器。 CloudFront也依赖于原始服务器   压缩文件或压缩和未压缩版本   可用的文件; CloudFront不会执行压缩   代表原始服务器。有了一些资格,CloudFront可以   还提供来自Amazon S3的压缩内容。欲获得更多信息,   见Choosing the File Types to Compress [强调我的]

也就是说,您需要自己提供压缩版本,但是一旦您进行了设置,这对客户来说是透明的 - 请注意内容必须使用gzip压缩;不支持其他压缩算法

  

[...]如果请求标头包含其他内容编码,例如deflate或sdch,CloudFront会在将请求转发到源服务器之前将其删除。如果Accept-Encoding字段中缺少gzip,则CloudFront仅提供该文件的未压缩版本。 [...]

有关要求和流程的详细信息,请参见How CloudFront Serves Compressed Content from a Custom OriginServing Compressed Files from Amazon S3

答案 1 :(得分:2)

JPEGOptim不进行任何压缩 - 它会进行优化

简短的回答是,,您应该始终在.jpg文件上使用JPEGOptim 优化,然后再将它们上传到S3(或任何来源)存储是)。这是永远的好主意。

如果您正在谈论基于纯文本的文件(例如,CSS,JavaScript,HTML),那么gzip压缩是合适的解决方案,并且 Steffen Opel 会有100%正确答案。

答案 2 :(得分:0)

亚马逊真正支持的唯一压缩是zip或gzip。您可以将这些压缩加载到S3中,然后直接加载到像Redshift这样的资源。简而言之,亚马逊没有为您提供所需的服务。这将是你必须自己利用的东西......