7

在常规的VPS站点上,我会使用Minify压缩和合并多个CSS/JS文件,因此该站点只使用1或2个HTTP请求。我现在正在处理的网站有它在Amazon S3上托管的CSS/JS文件,并通过Amazon CloudFront提供服务。很明显,Minify是一款PHP5应用程序,无法在AWS上运行。如何结合用于Amazon S3的JS/CSS?

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

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

回答

6

缩减大小结合和动态minifies JS/CSS。

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's Ajax Minifier

2

当CloudFront收到冷高速缓存命中时,它会向分配的配置的源服务器请求内容。在大多数情况下,S3存储桶被配置为原点。所以最简单的方法是将你的JS和CSS结合起来并将其存储在S3中,作为构建/部署过程的一部分。

如果您真的想要即时缩小,您可以将CloudFront配置为使用“自定义原点”。在此分发配置中,冷库高速缓存命中将从运行Minify的服务器中请求。

有关详细信息,请参阅有关creating distributions的CloudFront文档。

+0

+1,不知道自定义起源 – orip 2011-01-27 23:09:27

1

如果您打算提供来自S3/CloudFront的静态内容,我会建议提前压缩您的内容。我个人使用Juicer。完成之后,您可以gzip -9生产文件,然后使用Content-Encoding: gzip标题将它们上传到S3。

动态压缩的问题是您的网站需要的性能。 CloudFront定制产品支持稍微缓解了这一点,但使用像Capistrano这样的工具为您自动执行部署将非常简单。我自己就是这样做的。

1

新增 - 对Amazon CloudFront的Gzip压缩支持,Check here

启用gzip压缩的

您可以启用在一分钟内该功能!只需打开CloudFront控制台,找到您的分配,并在行为选项中将压缩对象自动设置为是: enter image description here