【问题标题】:JavaScript minification and compressionJavaScript 缩小和压缩
【发布时间】:2012-01-29 08:17:07
【问题描述】:

我正在尝试了解 JavaScript 缩小和压缩过程,并对此有几个问题:

  1. 由于缩小使代码难以调试,是否可以在客户端进行按需去缩小以掩盖您实际需要在网站上调试和调查某些内容的情况?
  2. 我记得在某处读到过,可以通过在 Apache Web 服务器中设置一些选项来启用所有资源(如图像、CSS、JavaScript 等)的压缩。在 Apache 级别完成的 JavaScript 压缩和使用 YUI Compressor 等工具完成的压缩有什么区别吗?

有人可以帮我了解以上内容吗?

我实际上需要对我的 JavaScript 文件进行去最小化的那种情况是假设第 1 行发生了 JavaScript 错误。 X. 对于缩小的文件,很难知道是哪个代码块在生产中导致了该错误,因为这些行都包含在一个缩小的文件中。在这种情况下,你们如何调查和调试?另一位用户在Packed/minified javascript failing in IE6 - how to debug? 问题中也提到了这个调试问题(虽然略微特定于 IE6)。

【问题讨论】:

    标签: javascript minify http-compression


    【解决方案1】:

    通常,开发人员会针对未压缩的脚本文件进行开发,在部署之前进行压缩。

    如果您必须返回并调试脚本文件,您只需打开常规的未压缩文件,进行工作、压缩和部署。如果您的意思是在您的网站生产时调试某些东西,那么不,您不能按需取消缩小脚本文件。

    是的,Apache 甚至 IIS 都可以为您自动 gzip 压缩脚本和图像。

    【讨论】:

    • 我喜欢Rails 处理资产的方式。它对它们进行压缩和时间戳。生产中不再需要刻录 CPU。它也是缓存友好的。
    • 在另一种生活中,我认为我是一名 RoR 开发人员......在这种生活中,它是 MVC,它基本上是带有 C# 的 Rails......可能会更糟...... :)
    • @Adam,查看“OriginalSyn”的答案之一,Chrome 似乎可以帮助您部分去除 javascript 文件
    • @peakit - 看起来 Chrome 正在重新格式化代码,因此看起来更好 - 我认为它不会恢复为变量和函数的原始名称,这就是你想要的真的需要用它做任何有用的事情。
    • 是的@Adam 我明白这一点,这就是为什么我在之前的评论中说这是通过 Chrome 进行的部分去缩小化。
    【解决方案2】:

    您不应该调试缩小的代码。理想情况下,开发过程是这样的:

    1. 您在本地构建和调试站点。您拥有完整版本的 javascript、样式表和所有内容。

    2. 您将一个版本部署到生产机器。你压缩和压缩你的资产副本并将其推送到服务器。您的本地开发副本保持不变。

    3. 如果生产中出现错误,您可以修改本地版本、缩小、压缩、上传。

    重复直到盈利

    【讨论】:

    • @Sergei Tulentsev,我在上面问题的编辑部分中提供了有关调试的更多详细信息。您能否看一下,并就如何去做这件事给我任何意见?谢谢。
    • 我会执行以下操作之一:1) 在某处复制生产环境并尝试使用完整的 javascripts 重现问题。 2) 将完整的 javascript 复制到生产环境并在 登录时呈现它们(并继续为所有其他人使用缩小版)
    【解决方案3】:
    1. 我更喜欢使用 JS 文件的本地未压缩副本,当我部署站点时,我会将所有 JS 文件压缩为一个。这样就很容易调试和改进代码。但是,有一些工具可以恢复缩小。看看这个SO post 对 JavaScript 的 revert minification。
    2. 查看 GZIP 压缩 - This blog 描述如何在 Apache 中启用 GZIP 以及如何验证您的服务器是否确实在压缩文件。

    【讨论】:

      【解决方案4】:

      是否可以在客户端进行按需去最小化

      一些浏览器有一个“漂亮的代码”视图,可以自动格式化源代码。请参阅 Firebug 的 CSS 选项卡。

      在 Apache 级别完成的 javascript 压缩和使用 YUI Compressor 等工具完成的压缩有什么不同吗?

      YIU Compressor 实际上是一个缩小器。 Apache 压缩就像在将文件发送到客户端之前对文件进行 ZIP 压缩,因此发送的实际文件比磁盘上的文件小。它们是两种相互独立的不同技术。

      【讨论】:

        【解决方案5】:

        由于缩小使代码难以调试,是否有可能 在客户端进行按需去缩小以掩盖案件 您实际需要调试和调查的地方 网站?

        有点。缩小的 javascript 具有相同的结构,它只是执行诸如删除多余空格和缩短变量名之类的操作。因此,您可以轻松地使代码再次可读,无论是手动还是使用脚本,但您无法恢复变量名,因此代码仍然难以使用。所以,如果你有原始代码,绝对不要摆脱它。单独保存压缩后的代码。

        我记得在某处读过可以启用所有压缩 通过设置一些选项来获取资源(如图像、css、javascript 等) 在 Apache Web 服务器中。

        是的,它被称为 gzip 压缩。它不是 apache 独有的,但您需要配置您的服务器以启用它。

        在 Apache 进行的 javascript 压缩有什么不同吗? 级别,以及使用 YUI Compressor 等工具完成的级别?

        是的。 YUI 压缩器是一个压缩器 - 输出是有效的 javascript。服务器端压缩更类似于压缩文件 - 浏览器必须先对其进行解码才能使用它。将两者一起使用会产生最小的文件大小。

        【讨论】:

        • 你回答了我所有的问题,因此接受这个作为 the 的答案。谢谢!
        【解决方案6】:

        如果您想调试生产代码,Chrome 开发工具可以对 javascript 代码进行去混淆(和去最小化)(在尝试在实际环境中复制您可能在开发中看不到的错误时很有用)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-27
          相关资源
          最近更新 更多