谁压缩他们的HTML?

时间:2010-03-11 12:46:47

标签: html performance compression

即使Stack Overflow也没有compress their HTML。是否建议压缩HTML?据我所见,looks like Google is the only one ....(查看来源)。为什么不是这种标准做法?

5 个答案:

答案 0 :(得分:12)

我认为你混淆了HTML的源代码 minification 和GZIP压缩。后者很常见(例如在Apache上使用mod_gzip,文章here)并且在大多数情况下应该足够了。它完全是服务器和浏览器之间的内部,你无法在源代码中看到它。

HTML的实际缩小并不值得做,除了保存字节可以节省数万美元流量的网站(例如谷歌)。

答案 1 :(得分:2)

HTML缩小对于Stackoverflow来说显然无关紧要。我根据首页的HTML源代码进行了一些测试。

Raw content length: 207454 bytes
Gzipped content length: 30915 bytes
Trimmed content length: 176354 bytes
Trimmed and gzipped content length: 29658 bytes

SO已经使用了GZIP压缩,因此修剪空格(实际上,HTML缩小或“HTML压缩”为调用它)将“仅”保存每个响应大约1KB的带宽。对于每天浏览量超过100万的gigant,HTML缩小每天可以节省超过1GB的带宽(实际上,SO也可以节省很多)。 Google每天提供数十亿次综合浏览量,每个字节差异每天都会节省千兆字节。

FWIW,我使用这个简单的quick'n'dirty Java应用程序来测试它:

package com.stackoverflow.q2424952;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.zip.GZIPOutputStream;

public class Test {

    public static void main(String... args) throws IOException {
        InputStream input = new URL("http://stackoverflow.com").openStream();
        byte[] raw = raw(input);
        System.out.println("Raw content length: " + raw.length + " bytes");
        byte[] gzipped = gzip(new ByteArrayInputStream(raw));
        System.out.println("Gzipped content length: " + gzipped.length + " bytes");
        byte[] trimmed = trim(new ByteArrayInputStream(raw));
        System.out.println("Trimmed content length: " + trimmed.length + " bytes");
        byte[] trimmedAndGzipped = gzip(new ByteArrayInputStream(trimmed));
        System.out.println("Trimmed and gzipped content length: " + trimmedAndGzipped.length + " bytes");
    }

    public static byte[] raw(InputStream input) throws IOException {
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        for (int data; (data = input.read()) != -1; output.write(data));
        input.close(); output.close(); return output.toByteArray();
    }

    public static byte[] gzip(InputStream input) throws IOException {
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        GZIPOutputStream gzip = new GZIPOutputStream(output);
        for (int data; (data = input.read()) != -1; gzip.write(data));
        input.close(); gzip.close(); return output.toByteArray();
    }

    public static byte[] trim(InputStream input) throws IOException {
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(input));
        for (String line; (line = reader.readLine()) != null;) output.write(line.trim().getBytes());
        reader.close(); output.close(); return output.toByteArray();
    }

}

答案 2 :(得分:1)

不缩小代码的另一个好理由是学习。我喜欢去查看人们的源代码以了解他们如何解决问题的能力,同样我保持我的源代码完整形式,以便其他人可以看看我的。在发送到浏览器之前,我仍然通过gzip压缩我的代码,但是当它到达时,它将被解压缩为完整形式并且完全可读。

答案 3 :(得分:0)

我认为很少有人这样做。由于HTTP上的有效负载现在可以进行压缩压缩,因此工作量太大,收益太少。

答案 4 :(得分:0)

Gzip压缩,每个现代Web服务器和Web服务器都使HTML压缩(缩小)无用或几乎无关紧要。

所以很少使用它。