7

Su un normale sito VPS vorrei usare Minify per comprimere e combinare più file CSS/JS in modo che il sito usi solo 1 o 2 richieste HTTP. Un sito su cui sto lavorando ora ha i file CSS/JS ospitati su Amazon S3 e pubblicati tramite Amazon CloudFront. Ovviamente Minify è un'app PHP5 e non è in grado di funzionare su AWS.Come combinare JS/CSS per Amazon S3?

Posso comprimere facilmente gli script prima del caricamento, ma qual è il modo migliore per combinare gli script su AWS S3 per ridurre le richieste HTTP?

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

risposta

6

Minify unisce e minifies JS/CS al volo.

S3 e CloudFront servono file statici: dovrai combinarli e ridimensionarli prima del caricamento. È abbastanza facile: concatare i file insieme e minimizzare con YUI Compressor o Google Closure Compiler (2 minifiers da riga di comando multipiattaforma gratuiti).

Di solito è conveniente avere uno script o costruire passo che fa questo, qualcosa di simile:

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

In Windows, un'altra opzione eccellente è Microsoft's Ajax Minifier.

2

Quando CloudFront riceve un hit della cache fredda, richiede il contenuto dal server di origine configurato della distribuzione. Nella maggior parte dei casi un bucket S3 è configurato come origine. Quindi il modo più semplice è quello di combinare e minimizzare JS e CSS è di memorizzarlo in S3 come parte del processo di creazione/distribuzione.

Se si desidera veramente ridurre al volo, è possibile configurare CloudFront per utilizzare una "Origine personalizzata". In questa configurazione di distribuzione, gli hit della cache fredda verranno richiesti dal server che esegue Minify.

Vedere la documentazione di CloudFront su creating distributions per i dettagli.

+0

+1, non sapeva di origini personalizzate – orip

1

Se si prevede di pubblicare contenuto statico da S3/CloudFront, è consigliabile comprimere il contenuto in anticipo. Personalmente, io uso Juicer. Una volta fatto ciò, è possibile effettuare il gzip -9 file di produzione e caricarli su S3 con un'intestazione Content-Encoding: gzip.

Il problema con la compressione al volo è il rendimento richiesto dal sito. Il supporto di CloudFront per l'origine personalizzata lo allevia un po ', ma sarebbe davvero facile automatizzare le distribuzioni con uno strumento come Capistrano che funzioni per te. Questo è l'approccio che prendo, me stesso.

1

Nuovo - Supporto compressione Gzip per Amazon CloudFront, Check here.

Abilitazione della compressione Gzip

È possibile attivare questa funzionalità in un minuto! Basta aprire CloudFront Console, individuare la distribuzione e impostare Comprimere oggetti automaticamente su Sì nelle opzioni Comportamento: enter image description here