2013-01-24 30 views
8

Rails 3.2をassets_syncで実行しています。Rails 3.2 + Heroku + S3 + CloudFront:提供していないgzip css js

gssバージョンのmy cssとjsが作成されました。 CloudFrontは、ヘッダーがgzipに要求されていても、gzipバージョンを提供していません。

asset_sync.rbで試しましたが、CloudFrontはまだ圧縮されていないバージョンを提供しています。 ABC.cloudfront.net/XYZ.css.gz

+0

config.gzip_compression = true実際にはそれは仕事です。ファイルをgzippedバージョンに置き換えるので、CloudFrontは常に圧縮されたバージョンを提供します。キャッシュに問題がある可能性が最も高いので、ファイルの名前を変更してみてください。 (または、ファイル名のダイジェストとファイルの内容が変更されていることを確認してください) – icem

答えて

1

あなたのアプリケーションにheroku config:add ASSET_SYNC_GZIP_COMPRESSION=trueを設定しましたか?

+0

はい、違いはありません – marcgg

4

CloudFrontディストリビューションの起源はS3バケットですか?その場合、S3がAccept-Encodingsヘッダーを正しく処理しないという問題があります。https://github.com/rumblelabs/asset_sync/issues/153

この問題で説明されている解決策がいくつかあります。ほとんどのブラウザ(一部のモバイルブラウザを除く)が正しく処理するか、solution outlined hereを試してみるので、デフォルトでgzippedファイルを提供することができます。

別の可能な解決策は、あなたのCloudFrontの配信のためのカスタム原点としてワニスキャッシュ層を使用することです:

インターネット - > CloudFrontは - >ワニス - > S3バケット

要求がに入って来たようCloudFrontにキャッシュされていない場合は、それはVarnishに転送されます。 VarnishはS3 Bucketから圧縮されていないファイルを取得し、ヘッダーの指示に従って圧縮し、ファイルをCloudFrontに送ってキャッシュします。

+0

あなたのasset_sync.rbはconfig/initializersにありますか? レールのログにこの行が表示されないようにしましたか? 「AssetSync:組み込みイニシャライザのデフォルト設定を使用」 – Bijan

+0

S3パートを削除してクラウドフロントに直接配信しましたが、あなたの答えはかなり意味があります。恩恵を受けている:) – marcgg

関連する問題