【问题标题】:How Gzip in Tomcat worksTomcat 中的 Gzip 是如何工作的
【发布时间】:2023-03-05 07:19:02
【问题描述】:

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

【问题讨论】:

    标签: javascript tomcat compression gzip yui


    【解决方案1】:

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

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

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

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

    您可以同时使用缩小和压缩,这样做有好处。详情请参阅this discussion

    【讨论】:

    • 那么,服务器将脚本压缩并发送到客户端(浏览器),所以这意味着浏览器会在开发人员查看源代码之前将其解压缩对吧?
    • 就是这样!压缩在服务器之间以相当低的级别处理,因此您通常不会看到它发生。 Chrome 会显示是否使用了压缩。在网络选项卡中查看请求的响应标头。压缩打开时,您会看到 Content-Encoding:gzip 的标题
    猜你喜欢
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 2018-11-07
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多