HTML缩小?[关闭]


99

是否存在一个在线工具,我们可以将页面的HTML源输入到该工具中并将代码最小化?

我会对aspx文件执行此操作,因为让网络服务器对它们进行gzip处理不是一个好主意...


19
什么时候拥有服务器gzip是一个坏主意?
Chuck

5
我读到这是因为aspx页面不是静态文件,IIS不会将其缓存,因此它将在每次请求时gzip该页面...
Paulo

23
...这是一个问题吗?除非您的服务器已经拥有99.9%的CPU,否则可能不会。gziping是通常要做的事情,比任何“缩小”效果都有效。
bobince


2
这里的答案已经过时,更不用说其中一些是错误的。请检查我对问题的解释和适当的工具
萨尔瓦多·达利

Answers:


63

也许尝试HTML Compressor,这是一个之前和之后的表,显示了它可以做什么(包括对于Stack Overflow本身):

抱歉,markdown没有表格的概念

它提供了多种选择来优化您的页面,包括安全的脚本最小化(压缩器,Google Closure编译器,您自己的压缩器)。默认选项集非常保守,因此您可以从此开始并尝试启用更激进的选项。

该项目有充分的文档记录和支持。


58

不要这样做。或者更确切地说,如果您坚持要这样做,请在完成任何更重要的网站优化后再执行。这样做的成本/收益可以忽略不计的可能性非常高,尤其是在您计划手动使用在线工具处理每个页面的情况下。

使用YSlowPage Speed确定您真正需要优化页面的操作。我的猜测是,减少HTML字节数将不是您网站的最大问题。压缩,缓存管理,图像优化等更有可能对您的网站整体性能产生更大的影响。这些工具将向您展示最大的问题是-如果您已经解决了所有问题,但仍然发现HTML缩小起了很大的作用,那就去解决。

(如果确定要使用它,并且使用的是Apache httpd,则可以考虑使用mod_pagespeed并启用某些选项来减少空格等,但要注意风险。)


25
如果简化的代码可以使用自动化美化轻松阅读,那么优化有什么问题呢?

12
这可能不是最大的问题-但是,如果在从dev到qa或prod的编译过程中,通过最小化的正则表达式集运行标记是一个微不足道的过程,那么为什么不希望发送较小的标记文档呢?
威尔·皮维

26
实际上不是原始问题的答案:(
Chuck Le Butt

7
@Will,几乎肯定不是通过最小化正则表达式来运行HTML的简单过程,即使使用适当的解析器,也可能不是简单或快速的。而且,与JS / CSS缩小不同,HTML缩小不会是无损的:任何标记都可以设置为样式white-space: pre,并且缩小会破坏预格式化的文本。
眼睑失明2011年

3
@eyelidlessness-我目前有成千上万的页面,正则表达式会在投放之前缩小这些页面。此功能不是系统的复杂或昂贵的部分。...另一方面,如果要解析计算的样式以避免避免使用样式化的元素white-space:pre,那么可以,最小化HTML会更加复杂。但是,我不清楚为什么有人要使用空白:pre而不是使用preor code元素。
Will Peavy

34

这是您问题的简短答案:您应该缩小HTML,CSS,JS。有一个易于使用的工具,称为grunt。它允许您自动执行许多任务。其中JSCSSHTML缩小,文件连结其他许多人

这里写的答案非常过时,甚至有时没有意义。与2009年的旧版本相比,很多事情发生了变化,因此,我将尝试正确回答。

简短的答案- 您绝对应该缩小HTML大小。今天是微不足道的,并提供了大约5%的加速比。如需更长的答案,请阅读整个答案

在过去,人们是手动缩小css / js(通过使用某些特定的工具运行它来缩小它)。自动化过程有点困难,并且肯定需要一些技巧。知道即使现在很多高级站点也没有使用gzip(这是微不足道的),人们不愿意缩小html是可以理解的。

那么为什么人们要缩小js,而不是html??缩小JS时,您将执行以下操作:

  • 删除评论
  • 删除空格(制表符,空格,换行符)
  • 改变长名称短(var isUserLoggedInvar a

即使在过去,这也带来了很大的进步。但是在html中,您不能将长名称简称为短,在此期间几乎没有任何评论。因此,剩下的唯一事情就是删除空格和换行符。这仅带来少量改进。

这里写的一个错误论点是,因为内容是通过gzip提供的,所以缩小没有意义。这是完全错误的。是的,gzip减少了缩小的改进是有道理的,但是如果您可以适当地修剪gzip注释和空格,而gzip只是重要部分,那为什么还要使用gzip注释,空格呢?就像您要存档的文件夹中有一些您永远不会使用的废话一样,您决定只是将其压缩而不是清理和压缩。

为什么没有必要进行缩小的另一个论点是,它很乏味。也许在2009年是正确的,但是这次之后出现了新的工具。现在,您无需手动缩小标记。使用Grunt之类的东西来安装grunt-contrib-htmlmin(依赖于@kangax的HTMLMinifier)并对其进行配置以缩小您的html很简单。您只需要2个小时即可学习咕gr咕and的声音,并配置所有内容,然后所有内容在不到一秒钟的时间内自动完成。听起来1秒钟(您甚至可以使用grunt-contrib-watch甚至可以自动执行任何操作)对于大约5%的改进(即使使用gzip)也不是那么糟糕。

还有一个论点是CSS和JS是static,并且HTML是由服务器生成的,因此您无法对其进行最小化。这也是真正在2009年,但目前更多的更多的网站都看起来像一个单页的应用程序,其中,服务器是薄客户端是做所有的路由,模板化和其他逻辑。所以服务器只给你JSON而客户端则将其呈现。在这里,您有很多用于页面的html和不同的模板。

所以结束我的想法:

  • 谷歌正在缩小HTML。
  • pageSpeed要求您缩小HTML
  • 这是微不足道的
  • 它带来了〜5%的改善
  • 它与gzip不同

3
精简HTML绝对不是小菜一碟,因为空格在HTML中很重要,是否可以删除任何给定的空格取决于CSS。另外,我认为瘦客户端很糟糕,不能将其作为反对缩小动态HTML的麻烦的一个很好的论据。(这样做的一个好方法是选择一个模板引擎[Haml,Jade等],该模板引擎首先不要在其渲染的输出中包含不必要的空格。)
Ry-

@minitech缩小HTML是微不足道的也有与空格(如一些可能出现的问题<span>)。首先,您始终可以找到一种方法来编写有效的HTML,使其与空格无关。同样,您可能会惊讶地听到,但是JS / CSS缩小器还会引入一个错误-这并不意味着您不应该使用它。因此,有两种方法可以解决您的问题:学习编写与空格无关的标记,在缩小之前/之后测试您的产品(CSS / HTML / JS)。另外,在Minifier中,您可以指定要保留的空白。
萨尔瓦多·达利

正确的JavaScript修饰符在非疯狂的代码(即,无法自行读取或因时间作弊的代码)上不会引入错误。而且不行,并非总是有写空白无关的HTML的方法,特别是因为HTML仍然不是空白无关的。完全没有 如果您认为边距会减少它,请确保对此进行复制和粘贴测试。指定我要保留的空白听起来像是在浪费时间(Google除外)…
Ry-

@minitech您能告诉我无法以空格不可知的方式编写的CSS吗?我缩小html很长时间了,到目前为止还没有发现问题。
萨尔瓦多·达利

* { white-space: pre; }是一个显而易见的选择,但是如果您要删除所有空白而不仅仅是折叠它(将其替换为边距),则文本可能会错误地复制并在文本浏览器和屏幕阅读器上造成严重破坏。
Ry-

23

我写了一个网络工具来最小化HTML。 http://prettydiff.com/?m=minify&html

该工具使用以下规则进行操作:

  • 删除所有HTML注释
  • 空格字符转换为单个空格字符
  • 标签内不必要的空格字符已删除
  • 两个标签之一不是单例的两个标签之间的空白字符被删除
  • 里面的所有内容 style标签均假定为CSS,因此将其缩小
  • script除非提供了不同的媒体类型,否则假定标签内的所有内容都是JavaScript,然后将其缩小
    • CSS和JavaScript压缩使用了JSMin的重叉形式。扩展了此fork,以原生支持CSS,也支持SCSS语法。JavaScript压缩支持自动分号插入,但是尚不支持自动花括号插入。

    7
    嗨,它删除了这一行!<!--[if IE 8.0]><link rel="stylesheet" href="css/ie8.css" type="text/css" /><![endif]-->
    UnLoCo 2012年

    1
    是的,如果您使用ko,这将是一场灾难!
    Ray Suelzer

    8

    这对我有用:

    http://minify.googlecode.com/git/min/lib/Minify/HTML.php

    它不是一个已经可用的在线工具,但是作为一个简单的PHP包含它很容易,您可以自己运行它。

    不过,我不会保存压缩文件,如果确实需要,可以动态地执行此操作,启用Gzip服务器压缩始终是一个更好的主意。我不知道IIS / .Net如何参与其中,但是在PHP中,就像在全局包含文件中添加一行一样简单


    6

    CodeProject有一个已发布的示例项目(http://www.codeproject.com/KB/aspnet/AspNetOptimizer.aspx?fid=1528916&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2794900),可以处理以下某些情况。 。

    • 将ScriptResource.axd调用合并为一个调用
    • 根据浏览器功能(包括gzip / deflate)压缩所有客户端脚本
    • ScriptMinifier,用于删除注释,缩进和换行符。
    • HTML压缩器可基于浏览器功能(包括gzip / deflate)压缩所有html标记。
    • 而且-最重要的是-HTML Minifier,用于将完整的html写入一行并在可能的级别(正在建设中)将其最小化。


    1

    尝试http://code.mini-tips.com/html-minifier.html,这是HTML Minifier的.NET库

    HtmlCompressor是一个小型,快速且易于使用的.NET库,它通过删除多余的空格,注释和其他不需要的字符,而不会破坏内容结构,从而最小化了给定的HTML或XML源。结果,页面变得更小,加载速度更快。还提供了命令行版本的压缩机。

    By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
    Licensed under cc by-sa 3.0 with attribution required.