Как минимизировать вывод php html без удаления условных комментариев IE?

Я минимизирую свои HTML-страницы с помощью этого PHP-скрипта:

function compress_html($html)
{
    preg_match_all('!(<(?:code|pre|script).*>[^<]+</(?:code|pre|script)>)!', $html, $pre);
    $html = preg_replace('!<(?:code|pre).*>[^<]+</(?:code|pre)>!', '#pre#', $html);
    $html = preg_replace('#<!–[^\[].+–>#', '', $html);
    $html = preg_replace('/[\r\n\t]+/', ' ', $html);
    $html = preg_replace('/>[\s]+</', '><', $html);
    $html = preg_replace('/\s+/', ' ', $html);

    if (!empty($pre[0])) {
        foreach ($pre[0] as $tag) {
        $html = preg_replace('!#pre#!', $tag, $html,1);
        }
    }
    return $html;
}

ob_start('compress_html');

Есть способ удалить только «HTML-комментарии»… а не условные комментарии IE?

Спасибо.


php
person user2008070    schedule 24.01.2013    source источник
comment
Так что убери эту строчку. Также вытащите вот это: $html = preg_replace('#<!–[^\[].+–>#', '', $html);   -  person Sammitch    schedule 24.01.2013


Ответы (1)


Ваш код не обрабатывает многострочные комментарии HTML, удаляя только первую строку. Кроме того, экономия, которую вы получаете от этого, незначительна, если вы / ваш сервер используете сжатие gzip. то есть:

Uncompressed, un-minified page: 2209 bytes
Compressed,   un-minified page:  959 bytes

Uncompressed, minified page:    1973 bytes
Compressed,   minified page:     914 bytes

Последние два пункта:

  1. Минимизация вашего HTML делает его почти невозможным для чтения, так что удачи в устранении неполадок.
  2. Страницы большего размера обычно имеют лучший коэффициент сжатия, особенно если данные повторяются.
person Sammitch    schedule 24.01.2013