Rails 3.2 + Heroku + S3 + CloudFront: Kein Versand von gzip css js

8

Ich führe Rails 3.2 mit Assets_sync.

Eine gz Version meiner CSS und JS wird erstellt. CloudFront liefert die gzip-Version nicht, obwohl die für gzip angeforderte Kopfzeile deflate.

Ich habe auch config.gzip_compression = true in asset_sync.rb ausprobiert, aber CloudFront liefert immer noch die unkomprimierte Version. Ich habe bestätigt, dass ich auf ABC.cloudfront.net/XYZ.css.gz

zugreifen kann     
Min Ming Lo 24.01.2013, 10:17
quelle

2 Antworten

4

Ist der Ursprung Ihrer CloudFront-Distribution ein S3-Bucket? Wenn ja, besteht das Problem darin, dass S3 den Header Accept-Encodings nicht richtig behandelt: Ссылка

In diesem Problem werden einige mögliche Lösungen beschrieben. Sie können Gzip-Dateien entweder standardmäßig bereitstellen, da die meisten Browser (mit Ausnahme einiger mobiler Browser) dies richtig handhaben, oder Sie versuchen die Lösung hier beschrieben .

Eine andere mögliche Lösung besteht darin, einen Varnish-Cache-Layer als benutzerdefinierten Ursprung für Ihre CloudFront-Distribution zu verwenden:

Internet - & gt; CloudFront - & gt; Lack - & gt; S3-Eimer

Wenn eine Anfrage bei CloudFront eingeht, wird sie an Varnish weitergeleitet, wenn sie noch nicht in CloudFront zwischengespeichert wurde. Varnish greift die unkomprimierte Datei aus dem S3-Bucket, komprimiert sie, wenn die Header diktieren, und sendet die Datei zum Zwischenspeichern an CloudFront zurück.

    
techpeace 04.03.2013 19:13
quelle
1

Haben Sie heroku config:add ASSET_SYNC_GZIP_COMPRESSION=true für Ihre Anwendung festgelegt?

    
catsby 26.02.2013 20:03
quelle