一尘不染

Tomcat中的Gzip如何工作

tomcat

我正在做有关脚本压缩的问题。以下是我在stackoverflow中发现的内容:

“如果在网页中使用它,则gzip是Web服务器中的一种配置方法。该文件由服务器gzip压缩,发送到浏览器。不需要手动操作。对于Apache:http://httpd.apache。
org / docs / 2.0 / mod /
mod_deflate.html

如果要将代码交付给开发人员,则可以使用gzip命令。”

有人告诉我,如果使用这种脚本压缩策略,它将使您非常容易调试:

当您使用Firebug在运行时调试javascript时,看到的脚本是原始的,未经压缩的脚本,可读性强。

但是,如果您使用YUI压缩器,则Firebug中显示的脚本将如下所示:

var is_moz=(typeof document.implementation.createDocument!="undefined");var is_chrome=navigator.userAgent.toLowerCase().indexOf("chrome")>-1;var selectedTreeNodeIdInOper="";var selectedTreeNodePkInOper="";var winDef="width=490,height=190,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,copyh....

这只是一条水平线,很难阅读。

我的问题是,tomcat中的gzip如何将压缩脚本发送给客户端,同时向开发人员显示原始脚本?魔法?


阅读 233

收藏
2020-06-16

共1个答案

一尘不染

这里有两个独立的问题:压缩和最小化。

压缩是服务器压缩内容(html,css,js)并将其发送到客户端(浏览器)的过程。然后,浏览器将内容解压缩为压缩之前的内容。在您查看源代码或浏览器中的开发人员工具时,您已经看到了原始脚本。可以将其视为将zip文件发送给某人。原始文件仍然完全保留在那里,只是包裹在一个zip文件中。

可以在应用程序体系结构的多个位置启用压缩。您可以在Web服务器(链接到Apache的httpd文档),应用服务器(Tomcat支持压缩)或自己的代码(例如搜索“
servlet压缩过滤器”)中启用它。

缩小(YUI Compressor和其他工具的作用)会永久更改脚本,通常会创建文件的-
min.js版本。该文件将缺少换行符,并且可能已重命名了变量。由于此更改后的文件就是服务器发送的文件,因此您将在浏览器中看到该文件,是的,它很难调试。浏览器制造商已经意识到这一点,并且Chrome,Firefox和IE11+支持映射,这些源映射告诉浏览器如何将代码的最小化版本映射回原始文件。YUI压缩机不支持sourcemaps,但像其他的工具丑化做。

您可以同时使用压缩和压缩,这样做有很多好处。

2020-06-16