为什么不压缩 HTML
CSS 和 JavaScript 的压缩已经很成熟,各大网站都在使用。HTML 的压缩(特指去除空白字符和注释),除了 Google 等搜索页面,在其它网页上基本见不到踪迹。
原因很简单:
- HTML 文档中,多个空白字符等价为一个空白字符。也就是说换行等空白字符的删除是不安全的,有可能导致部分元素的样式产生差异。
- HTML 元素中,有一个
pre, 表示 preformatted text. 里面的任何空白,都不能被删除。 - HTML 中有可能有 IE 条件注释。这些条件注释是文档逻辑的一部分,不能被删除。
只想到以上 3 点,可能还有其它陷进。对于动态页面来说,HTML 的压缩有可能还会增加服务器的 CPU 负担,得不偿失。
一般来说,通过 gzip 压缩已经能达到很好的效果。进一步的压缩存在陷进,除非能像 Google 一样充分测试(Google 也仅压缩了少部分核心服务的页面),否则不推荐对 HTML 进行压缩处理。

May 2nd, 2010 on 21:49
看完立马去取消了wordpress的html压缩,删注释和换行空格 增益不大,不压缩html倒是比较合适的做法。
May 2nd, 2010 on 22:38
呃,如果是给写入动态数据之前压缩,那肯定是会导致动态数据不方便写入的.
May 2nd, 2010 on 23:21
这就是编码前没有好的编码规范所导致的后果. 不是不能压缩,是已经石化了!
客户端对 注释,空格,它同样去判断是否需要去解析. 只是, 这个影响就像屁股上的一颗痣, 不痛不痒,大家都看不到, 也无所谓而已!
May 2nd, 2010 on 23:47
实际部署到线上的代码,HTML都是去掉注释的吧,这时候删除剩下空格几乎已经没意义了。
May 3rd, 2010 on 4:29
1 只是表现行为跟一个空白字符一样,实际还是占多个字符的文档大小,这个是最应该被压缩的东西,元素之间的换行符引起的3px间隙也是被干掉的
2、3 都可以通过压缩程序判断
May 3rd, 2010 on 8:51
个人觉得Web站点中压缩收益并不大,最能体现价值的是在网速很有限或是对流量要求较高的场景,例如基于GPRS的移动站点。手机淘宝的首页应用了HTML压缩,效果还可以,只是除了文中提到的这些陷阱外,还要注意部分移动浏览器的支持情况。据我所知,部分MTK浏览器对压缩支持的还是有问题的。它解析长整行的HTML代码时会占用更高的内存。
May 3rd, 2010 on 11:56
@Darcy 不尽然啊,生产环境的代码也有注释的,比如说CMS区域这些,这样能保证方便管理。
May 3rd, 2010 on 19:04
学习了,讲得挺好的
May 3rd, 2010 on 22:35
在开启GZIP的情况下,压缩的HTML(特指去除空白字符和注释)和没压缩的HTML在大小上基本上是没差多少的,但去掉这些空白字符和注释确有些麻烦。
May 4th, 2010 on 9:14
还有一个渺小的原因,压缩了的代码,别人看起来不方便。
May 4th, 2010 on 12:13
从实际效果看,压缩html带来的好处还是挺大的,能减少不少流量。
射雕所说的3个问题,其实都有解决方案,建议采用:
1. 可以只压缩“缩进”,不压缩“换行”,可保证不会丢失应有的空白;
2. 将页面的展示效果严格依赖于源代码的书写格式本身就是不靠谱的行为,因此pre标签内部的内容应该是需要转义的。比如pre中是可以写 表示换行的,可把pre中的内容全部写在一行,用表示换行,则其中的缩进等就不会被压缩掉;
3. 鉴于此点,可不压缩注释,毕竟代码中的注释还是比较少的。
May 4th, 2010 on 12:14
我的内容被过滤掉了,我写的第2条是:
2. 将页面的展示效果严格依赖于源代码的书写格式本身就是不靠谱的行为,因此pre标签内部的内容应该是需要转义的。比如pre中是可以写 <br /> 表示换行的,可把pre中的内容全部写在一行,用<br />表示换行,则其中的缩进等就不会被压缩掉;
May 4th, 2010 on 12:22
这些理由都不是理由。
你提到的原因都属于技术障碍,但是其实这些都也很容易解决,比如lite模板就能很好解决。
不被采用最大的问题还是在于产出,那就是,有必要压缩嘛?
May 4th, 2010 on 18:07
同意宇义和 jindw
最关键的问题是:性价比太低,还有可能导致问题,索性不如不压缩,呵呵
May 4th, 2010 on 19:05
确实是没必要哈,不过
nb的www.1ting.com压缩了,哈哈
May 6th, 2010 on 0:05
理论上,如果开启GZIP的话,压缩率可以到50%甚至更高,此时是不需要做HTML压缩的。但是在实际的环境中,由于个人计算机上都装了各式各样的防火墙软件,这些软件为了提高网页过滤的效率,通常会把GZIP压缩选项给去掉。大牛Steve Souders对自己网站上的请求做了分析,只有一部分的请求(印象中这个数是50%左右)的请求支持GZIP。
具体的可以google一下Steve Souders的一些PPT
May 6th, 2010 on 10:01
Hi,老兄,我在twitter上知道你也是株洲的,咱们认识一下如何?
May 6th, 2010 on 16:38
还有某些TAG之间的换行,有和没有在浏览器里面的表现样式也不一样。
May 7th, 2010 on 15:56
原来是这样,不过有时压缩也还是可以的,只是懒得做,很多进用不到压缩的。
May 9th, 2010 on 20:35
受教了。看来压缩下js就够了
May 17th, 2010 on 20:53
射雕所说的主要指空格和回车吗?
其实,HTML是通过语法压缩的。也就是HTML本身的写法。因为产生HTML的角色太多(静态,动态,前端动态),也没什么量化指标,所以很难控制压缩成什么样(代码写成什么程度)。
再者通常人为怎么”压缩”也赶不上GZIP的效率,所以通常代码更需要考虑执行效率,而不是传输效率,也就很少人关注HTML“压缩”了。
Google的压缩是因为早期他希望首页文本尽可能控制在一个或两个包内,而且他的首页太重要了,流量也很离谱。压缩一个字节,总流量一算都是个不小的数字,自然也就是必要之举了。
可以对比参照一下它的其他服务,没有那么“紧”的HTML压缩行为。
June 1st, 2010 on 10:47
慢慢看中····
June 15th, 2010 on 0:04
压还是有好处的,就是处理比较麻烦。对于淘宝首页几千万的pv来看还是有点值得。请看我的项目中对淘宝的测试数据。
2010-06-04 17:20:52 228KB (49.1KB gzipped) 202.7KB (47.5KB gzipped) 25.4KB ( 2.5KB gzipped )
项目地址:
http://showminifier.appspot.com/
June 22nd, 2010 on 10:06
我来回答ls的问题,lz的意思是对于html,gzip compression是必要的,但minifying(去除空格注释等)是会导致问题的
ps:compressi和minify两个完全不相干术语都被翻成压缩,确实很混乱
leave a reply