Javascript Tomcat中Gzip的工作原理

Javascript Tomcat中Gzip的工作原理,javascript,tomcat,compression,gzip,yui,Javascript,Tomcat,Compression,Gzip,Yui,我正在处理有关脚本压缩的问题。以下是我刚刚在stackoverflow中发现的内容: 如果您在网页中使用gzip,则gzip是web服务器中的一种配置方法。该文件由服务器GZIPP,发送到浏览器。无需手动操作。对于Apache: 如果要将代码交付给开发人员,可以使用gzip命令。” 有人告诉我,如果使用这种脚本压缩策略,将使您很容易调试: 当您在运行时使用Firebug调试javascript时,您看到的脚本是原始的未压缩脚本,可读性很强 但是如果使用YUI压缩器,Firebug中显示的脚本如下

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

如果您在网页中使用gzip,则gzip是web服务器中的一种配置方法。该文件由服务器GZIPP,发送到浏览器。无需手动操作。对于Apache:

如果要将代码交付给开发人员,可以使用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如何向客户端发送压缩脚本,同时向开发人员显示原始脚本?魔法?

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

压缩是服务器压缩内容(html、css、js)以发送到客户端(浏览器)的过程。然后浏览器将内容反压缩回压缩前的状态。当您在浏览器中查看源代码或查看开发人员工具时,您看到的是原始脚本。把它想象成向某人发送zip文件。原始文件仍然保持原样,只是用zip包起来

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

缩小(YUI Compressor和其他工具所做的)会永久性地更改脚本,通常会创建文件的-min.js版本。此文件将缺少换行符,并且可能重新命名了变量。因为这个修改过的文件是服务器发送的,这是您在浏览器中看到的,是的,很难调试。浏览器制造商已经认识到了这一点,并且Chrome、Firefox和IE11+支持告诉浏览器如何从代码的最小化版本映射回原始文件。YUI Compressor不支持sourcemaps,但其他工具,如


您可以同时使用缩小和压缩,这样做有好处。有关更多详细信息,请参阅。

服务器压缩脚本并将其发送到客户端(浏览器),因此这意味着浏览器将在开发人员查看源代码之前将其解压缩,对吗?正是这样!压缩在服务器之间以相当低的级别处理,所以您通常不会看到它发生。Chrome将显示是否使用了压缩。查看“网络”选项卡中请求的响应标题。打开压缩时,您将看到内容编码的标题:gzip