2011-08-05 3 views
28

Rails 3.1には、ファイルを.gzファイルに圧縮できる便利なシステムがあります。しかし、代わりに、アセットで作成されたすべてのアセットファイルを静的なWebサーバーにプリコンパイルしています。これはすべて動作しますが、どうすれば.gzファイルを通常どおりに提供するためにnginxを入手できますか?NGINXで.gz圧縮ファイルを提供する

+0

Rails 4.2の 'rake assets:precompile'は.gzファイルを作成しないので、いくつかの修正https://multiplethreads.wordpress.com/2015/08/08/generate-gzip-assets-with-rails-sprockets-3/ – Nishant

答えて

57

1)あなたはnginxの> 1.2.xの(適切なヘッダーへの変更を持っていることを確認)と--with-http_gzip_static_moduleオプション

2)奉仕する(このオプションのgzipを有効にするバックエンドでコンパイルしますgzipヘッダを有する応答)

gzip_staticと

3)セットアップ資産の位置(直接all.js.gzファイル)

all.css.gzを提供します

4)防止のETagの生成および資産

5)のための最後のモディファイ計算キャッシュSSLに右のCache-Controlの電源をオンに役立ったブラウザが閉じられると、彼らは期限切れになりますしない限り、静的な資産、

location ~ ^/(assets|images|javascripts|stylesheets|swfs|system)/ { 
     gzip_static on; 
     expires  max; 
     add_header Cache-Control public; 
     add_header Last-Modified ""; 
     add_header ETag ""; 
    } 

完全なNginx設定を取得したい場合は、this gist on Githubを参照してください。

open_file_cacheは、オープンファイルディスクリプタ、サイズ、変更時刻、およびディレクトリ検索をキャッシュするのに役立ちます。これは、ファイルシステムの負荷が高い場合に役立ちます。

更新日:エッジに住んでいる場合は、SPDYをオンにしてSSL接続を強化します。

+1

アセットのログをオフにすることを忘れないでください:access_log/dev/null ; error_log/dev/null; – Anatoly

+1

**/dev/null **は、 "off"がファイルであるためです – Anatoly

+2

エラーログをオフにしたい場合は、/ dev/nullを使用する必要があります。 access_logは実際にロギングをオフにする 'off'引数を受け入れます。そのため、最初に行が生成されることさえありません。 – kolbyjack

関連する問題