5

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

谷歌页面洞察力推荐无损压缩,我正试图弄清楚如何解决这个问题。这些特定图像位于 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 存储桶。我正在寻找云端可以做到的解决方案。

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

谢谢,杰夫

4

3 回答 3

3

更新

正如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 的压缩文件中概述了有关要求和流程的详细信息。

于 2014-06-27T10:47:21.487 回答
2

JPEGOptim 不进行任何压缩——它进行优化

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

如果您谈论的是基于纯文本的文件(例如,CSS、JavaScript、HTML),那么 gzip-compression 是合适的解决方案,Steffen Opel会得到 100% 的正确答案。

于 2014-06-28T22:25:09.257 回答
0

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

于 2014-06-27T03:20:32.353 回答