8

在一个普通的 VPS 站点上,我会使用 Minify 来压缩和组合多个 CSS/JS 文件,因此该站点只使用 1 或 2 个 HTTP 请求。我现在正在处理的一个站点将其 CSS/JS 文件托管在 Amazon S3 上并通过 Amazon CloudFront 提供服务。显然 Minify 是一个 PHP5 应用程序,不能在 AWS 上运行。

我可以在上传之前轻松压缩脚本,但是在 AWS S3 上组合脚本以减少 HTTP 请求的最佳方法是什么?

http://code.google.com/p/minify/

4

4 回答 4

6

Minify 即时组合和缩小 JS/CS。

S3 和 CloudFront 提供静态文件 - 您必须在上传之前自行组合和缩小它们。这很容易 - 将文件连接在一起并使用YUI CompressorGoogle Closure Compiler(2 个免费的跨平台命令行压缩程序)进行压缩。

拥有执行此操作的脚本或构建步骤通常很方便,例如:

#!/bin/bash
cat a.js b.js c.js | java -jar yuicompressor-1.4.2.jar --type js -o output.min.js

在 Windows 上,另一个很好的选择是Microsoft 的 Ajax Minifier

于 2011-01-26T21:29:51.550 回答
2

当 CloudFront 收到冷缓存命中时,它会从分配的已配置源服务器请求内容。在大多数情况下,S3 存储桶被配置为源。因此,最简单的方法是将您的 JS 和 CSS 组合并缩小,将其存储在 S3 中,作为构建/部署过程的一部分。

如果您真的想即时缩小,您可以将 CloudFront 配置为使用“自定义源”。在这个发行版配置中,冷缓存命中将从您运行 Minify 的服务器请求。

有关详细信息,请参阅有关创建分配的 CloudFront 文档。

于 2011-01-26T21:54:44.330 回答
1

如果您计划从 S3/CloudFront 提供静态内容,我建议您提前压缩您的内容。就个人而言,我使用榨汁机。完成此操作后,您可以gzip -9制作生产文件,并将它们上传到带有Content-Encoding: gzip标题的 S3。

动态压缩的问题是您的站点受到的性能影响。CloudFront 自定义源支持稍微缓解了这一点,但使用Capistrano等为您完成这项工作的工具自动化您的部署非常容易。这是我自己采取的方法。

于 2011-02-02T05:57:25.427 回答
1

新增功能 – 对 Amazon CloudFront 的 Gzip 压缩支持,请在此处查看

启用 Gzip 压缩

您可以在一分钟内启用此功能!只需打开 CloudFront 控制台,找到您的分配,然后在 Behavior 选项中将 Compress Objects Automatically 设置为 Yes: 在此处输入图像描述

于 2016-02-29T11:28:58.287 回答