1

我有一个常规的 express.js 应用程序,我正在使用

app.use(express.compress())

为了压缩 gzip 响应,现在当我转到 node.js 中的常规视图页面时,它们都显示为在浏览器中使用 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')

主干应用程序加载正常,唯一的问题是,它没有压缩。有任何想法吗?

4

1 回答 1

1

在 ZingProject.com,我们使用 Express 3.2.6 并且和您一样,我们确保 gzip 压缩如下:

app.use(express.compress());

只需添加这一行,在 Chrome 中验证的传输大小就小了 20%-80%,所以我们知道这是可行的。

您如何验证传输未压缩?在 Chrome 检查器中,在网络选项卡上,您将看到带有两个数字的传输大小。一个是传输的网络数据量,另一个是文件的实际未压缩大小。如果数字不同,则您的压缩工作正常。如果数字相同,则确实有问题。Firebug 仅向您显示网络传输大小,因此您必须打开和关闭压缩,并在使用 Firefox 时比较每个传输的大小。

于 2013-08-14T18:25:39.547 回答