【问题标题】:Difference between Transferred and Size columns in Mozilla Firexfox Network tabMozilla Firefox 网络选项卡中已传输和大小列之间的区别
【发布时间】:2015-08-14 01:21:46
【问题描述】:

我正在尝试确定 Transferred 列和 Size 列之间的区别。是不是跟压缩文件和未压缩文件的区别有关系?

我没有在我的服务器(Node.js Express 服务器)上压缩我的文件,所以我不知道为什么文件大小会有所不同。

【问题讨论】:

标签: node.js express mozilla


【解决方案1】:

您的 express 应用程序启用了 gzip 压缩,如 Content-Encoding: gzip 标头所示,因此响应正文在通过网络发送之前使用 gzip 压缩。传输的大小是压缩时的,大小是在浏览器中解压缩的。 Express 会即时执行此操作,因此即使您的文件未在磁盘上压缩,它也会在通过网络发送之前进行压缩。

跟进您的 cmets

您尚未发布任何代码,但您的 express 应用程序可能正在使用 compression 中间件(可能来自您开始使用的样板文件)。如果是这样,那将使用mime-db 来确定响应内容类型是否可压缩。在 mime-db 中查找 application/javascript 会发现它被标记为可压缩:

mimeDb['application/javascript']
{ source: 'iana',
  charset: 'UTF-8',
  compressible: true,
  extensions: [ 'js' ] }

请注意,此处不涉及.gz 文件扩展名。磁盘上没有.gz 文件,正在对内存中的.js 文件进行压缩。另请注意,仅设置 Content-Encoding: gzip 标头而不实际将正文编码为 gzip 并不是您想要做的事情。这会导致客户端的编码错误。

【讨论】:

  • 嗯,你是对的,看起来 Express 正在做 gzip-ing 开箱即用。我不知道它开箱即用地压缩了 .js 资产。我以为我自己添加了,使用 app.get('*.gz', function(req,res,next){ res.set('content-encoding','gzip')});
  • 正则表达式 '*.gz' 可能正在捕获 .js 文件,因为我对 Express 正则表达式不太熟悉
猜你喜欢
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-03
  • 2012-07-15
  • 2015-04-01
  • 1970-01-01
相关资源
最近更新 更多