【问题标题】:How to Minify HTML code?如何缩小 HTML 代码?
【发布时间】:2011-08-14 12:25:58
【问题描述】:

我的想法是以某种方式在服务器端缩小 HTML 代码,以便客户端接收更少的字节。

“缩小”是什么意思?

没有拉链。更像是,例如,jQuery 创建者使用 .min.js 版本。换句话说,我需要删除不必要的空格和换行符,但我不能删除太多的 HTML 表示更改(例如删除段落中实际单词之间的空格)。

有什么工具可以做到吗?我知道有HtmlPurifier。它能够做到吗?还有其他选择吗?

附:请不要提供正则表达式。我知道只有 Chuck Norris 可以用它们解析 HTML。 =]

【问题讨论】:

  • 我认为您不需要这样做。大多数网络服务器都支持“gzipped”服务网页。您的空格将不再成为问题。您应该始终提供压缩后的网页。
  • 您可以编写一个简单的程序,使用 HTML 解析库来解析 HTML 文件,然后将其写回。如果您使用 C#,您可以查看 LINQ-to-HTML 库。
  • 同意 Stephen Chung 的观点:如果你压缩 HTML,所有的空格都会被压缩。这将比修复 HTML 本身更快。

标签: html html-parsing minify htmlpurifier min


【解决方案1】:

有点晚了,但仍然......通过使用 output_buffering 就这么简单:

function compress($string)
{
    // Remove html comments
    $string = preg_replace('/<!--.*-->/', '', $string);

    // Merge multiple spaces into one space
    $string = preg_replace('/\s+/', ' ', $string);   

    // Remove space between tags. Skip the following if
    // you want as it will also remove the space 
    // between <span>Hello</span> <span>World</span>.
    return preg_replace('/>\s+</', '><', $string);      
}

ob_start('compress');

// Here goes your html.    

ob_end_flush();

【讨论】:

  • 您可能不想删除标签中的空格,例如 pre、code 等。
  • @BijayRungta 你是对的。尽管可以通过一些修改来避免这种情况。我刚刚在上面给出了一个想法:) +1 对您的评论。
  • 使用正则表达式 does not work 解析 HTML。您的正则表达式会中断,例如&lt;!-- foo --&gt;&lt;p&gt;bar&lt;/p&gt;&lt;!-- baz --&gt;.
【解决方案2】:

您可以将 HTML 代码解析为 DOM 树(应在节点中保留内容空白),然后将其序列化回 HTML,而无需任何美化空格。

【讨论】:

    【解决方案3】:

    有什么工具可以做到吗?

    是的,这是一个您可以包含在构建过​​程中或用于 Web 缓存层的工具: https://code.google.com/archive/p/htmlcompressor/

    或者,如果您正在寻找一种工具来缩小您粘贴的 HTML,请尝试: http://www.willpeavy.com/minifier/

    【讨论】:

      【解决方案4】:

      您可以使用 Pretty Diff 工具:http://prettydiff.com/?m=minify&html 它还会缩小 HTML 代码中的任何 CSS 和 JavaScript,并且缩小以回归的方式进行,以免妨碍将来将 HTML 美化为可读形式。

      【讨论】:

        【解决方案5】:

        有什么工具可以做到吗?

        您可以使用CodVerter Online Web Development Editor 来压缩混合的 html 代码。
        压缩机经过多次可靠性和准确性测试。
        (完全披露:我是开发人员之一)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-12-16
          • 2016-07-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多