我如何使用node.js中的require.js进行Gzip响应

时间:2013-08-14 17:12:24

标签: node.js backbone.js express requirejs

我有一个普通的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')

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

1 个答案:

答案 0 :(得分:1)

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

app.use(express.compress());

在Chrome中验证的转移尺寸减少了20%-80%,只需添加此行即可让我们知道它有效。

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