Кто сжимает их HTML? - PullRequest
       10

Кто сжимает их HTML?

4 голосов
/ 11 марта 2010

Даже переполнение стека не сжимает их HTML . Рекомендуется ли сжимать HTML? Насколько я видел, он выглядит так, будто Google является единственным .... Почему это не стандартная практика?

Ответы [ 5 ]

12 голосов
/ 11 марта 2010

Я думаю, вы путаете исходный код минимизацию HTML и сжатие GZIP. Последнее довольно распространено (например, использование mod_gzip на Apache, статья здесь ) и должно быть достаточно в большинстве случаев. Он полностью внутренний между сервером и браузером, его нельзя увидеть в исходном коде.

Фактическое минимизация HTML на самом деле не стоит делать, за исключением сайтов, где сохраненный байт может означать десятки тысяч долларов экономии трафика (как для Google.)

2 голосов
/ 11 марта 2010

Сокращение 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», как вы называете это) сэкономит «только» около 1 КБ полосы пропускания на ответ. Для гигантов с более чем 1 миллионом просмотров страниц в день минимизация HTML уже сэкономила бы более 1 ГБ пропускной способности в день (на самом деле, SO также сэкономит столько же). Google обслуживает миллиарды просмотров страниц в день, и каждый байт будет экономить гигабайты в день.

FWIW, я использовал это простое быстрое и грязное 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();
    }

}
1 голос
/ 11 марта 2010

Еще одна веская причина не минимизировать ваш код для обучения. Мне нравится возможность просматривать исходный код людей, чтобы увидеть, как они решают проблемы, и также я сохраняю свой источник в полной форме, чтобы другие могли посмотреть на мой. У меня все еще есть код, сжатый через gzip до его отправки в браузер, но когда он прибудет, он будет распакован в полную форму и полностью читаем.

0 голосов
/ 11 марта 2010

Gzip-сжатие, которое каждый современный веб-сервер и веб-сервер делает сжатие (минимизацию) HTML бесполезным или почти незначительным.

Так что очень немногие используют это.

0 голосов
/ 11 марта 2010

Я думаю, что мало кто делает. Слишком много работы, слишком мало выгоды, особенно потому, что в наши дни полезная нагрузка по HTTP может быть сжата zip.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...