Tomcat中的Gzip如何工作

时间:2014-09-10 19:11:26

标签: javascript tomcat compression gzip yui

我正在做有关脚本压缩的问题。以下是我刚刚在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如何将压缩脚本发送给客户端,同时向开发人员显示原始脚本?魔法?

1 个答案:

答案 0 :(得分:2)

这里有两个不同的问题:压缩和缩小。

压缩是服务器压缩要发送到客户端(浏览器)的内容(html,css,js)的过程。然后,浏览器将内容反压缩回到压缩之前的内容。当您在浏览器中查看源代码或查看开发人员工具时,您会看到原始脚本。可以把它想象成发送一个zip文件给某人。原始文件仍然完全没有,只是用拉链包裹起来。

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

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

您可以一起使用缩小和压缩,这样做有好处。有关详细信息,请参阅this discussion