Как совместить JS / CSS для Amazon S3? - PullRequest
8 голосов
/ 26 января 2011

На обычном 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 ]

6 голосов
/ 27 января 2011

Minify объединяет и минимизирует JS / CS на лету.

S3 и CloudFront обслуживают статические файлы - вам придется самостоятельно объединять и минимизировать их перед загрузкой.Это достаточно просто - объединить файлы и минимизировать их с помощью YUI Compressor или Google 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 .

2 голосов
/ 27 января 2011

Когда CloudFront получает «холодный» кэш, он запрашивает контент с настроенного исходного сервера дистрибутива. В большинстве случаев S3 Bucket настроен как источник. Таким образом, самый простой способ - объединить и минимизировать JS и CSS, это сохранить его в S3 как часть процесса сборки / развертывания.

Если вы действительно хотите минимизировать «на лету», вы можете настроить CloudFront на использование «Custom Origin». В этой конфигурации дистрибутива запросы на холодный кеш будут запрашиваться с вашего сервера, на котором запущен Minify.

Подробнее см. Документацию CloudFront по созданию дистрибутивов .

1 голос
/ 29 февраля 2016

Новое - поддержка сжатия Gzip для Amazon CloudFront, Проверьте здесь .

Включение сжатия Gzip

Вы можете включить эту функцию за минуту!Просто откройте консоль CloudFront, найдите свой дистрибутив и установите для параметра Сжатие объектов автоматически значение Да в параметрах поведения: enter image description here

1 голос
/ 02 февраля 2011

Если вы планируете обслуживать статический контент из S3 / CloudFront, я бы рекомендовал сжимать ваш контент заранее. Лично я пользуюсь соковыжималкой . После этого вы можете gzip -9 свои производственные файлы и загрузить их на S3 с заголовком Content-Encoding: gzip.

Проблема сжатия на лету заключается в том, что производительность вашего сайта снижается. Поддержка пользовательского происхождения CloudFront немного облегчает эту задачу, но было бы очень легко автоматизировать развертывание с помощью инструмента, подобного Capistrano , который сделает эту работу за вас. Это подход, который я использую сам.

...