1

私は通常のexpress.jsアプリを持っています、私は使用しています

app.use(express.compress())

gzip 応答を圧縮するために、node.js で通常のビュー ページに移動すると、ブラウザーで gzip を使用して提供されているものとしてすべて表示されます。しかし、バックボーン アプリを使用してページにアクセスすると、応答が gzip されません。多分私はここで何かを逃しています。これは私の app.coffee がどのように見えるかです:

app = express()
app.use(express.compress())

app.set "port", process.env.PORT or 3000
app.set "views", __dirname + "/views"
app.set "view engine", "jade"
app.engine 'hamlc', require('haml-coffee').__express

app.use express.favicon()
app.use express.logger("dev")
app.use express.bodyParser()
app.use express.methodOverride()
app.use express.static(path.join(__dirname, "public"))
app.use('/dist', express.static(__dirname + '/dist'));
app.use('/docs', express.static(__dirname + '/docs'));
app.use('/tmp', express.static(__dirname + '/tmp'));

app.use require('connect-assets')()

私には普通の app.coffee のように思えます。これが、require.js がビューに読み込まれる方法です。

- if(settings.env == 'production')
  script(type='text/javascript', data-main='/dist/js/main.js',       src='javascripts/backbone/marionette/require.js')
- else
  script(type='text/javascript', data-main='javascripts/backbone/main.js', src='javascripts/backbone/marionette/require.js')

バックボーン アプリは正常にロードされます。唯一の問題は、gzip されていないことです。何か案は?

4

1 に答える 1

1

ZingProject.com では、Express 3.2.6 を使用しており、皆さんと同様に、次のような gzip 圧縮を保証しています。

app.use(express.compress());

Chrome で検証された転送サイズは、この行を追加するだけで 20% ~ 80% 小さくなり、動作することがわかりました。

転送が圧縮されていないことをどのように確認していますか? Chrome インスペクタのネットワーク タブに、転送サイズが 2 つの数字で表示されます。1 つは転送されたネットワーク データの量で、もう 1 つはファイルの実際の非圧縮サイズです。数値が異なる場合、圧縮は正しく機能しています。数値が同じ場合、何かがずれています。Firebug はネットワーク転送サイズのみを表示するため、圧縮のオンとオフを切り替えて、Firefox を使用している場合はそれぞれの転送サイズを比較する必要があります。

于 2013-08-14T18:25:39.547 に答える