【发布时间】:2015-08-14 01:21:46
【问题描述】:
我正在尝试确定 Transferred 列和 Size 列之间的区别。是不是跟压缩文件和未压缩文件的区别有关系?
我没有在我的服务器(Node.js Express 服务器)上压缩我的文件,所以我不知道为什么文件大小会有所不同。
【问题讨论】:
-
对于 chrome stackoverflow.com/questions/8072921/…。但你会明白的。
我正在尝试确定 Transferred 列和 Size 列之间的区别。是不是跟压缩文件和未压缩文件的区别有关系?
我没有在我的服务器(Node.js Express 服务器)上压缩我的文件,所以我不知道为什么文件大小会有所不同。
【问题讨论】:
您的 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 并不是您想要做的事情。这会导致客户端的编码错误。
【讨论】: