Полезные статьи по разработке сайта на системе управления 1С-Битрикс. Программирование. Верстка.

Минификация (сжатие) исходного кода (HTML) в 1C-Bitrix

  588

Для ускорения загрузки сайта необходимо уменьшить количество бесполезной информации, передаваемой от сервера к клиенту.

На выходе Битрикс генерирует html-код, в котором много лишних переносов сток, табуляций и пробелов.

Чтобы исправить данную ситуацию, нужно в /bitrix/php_interface/init.php файл внести следующие строки (перед модификацией настоятельно рекомендую сделать резервную копию init.php файла):

 // Удаляем лишние пробелы и пустые строки в html перед выводом пользователю
AddEventHandler("main", "OnEndBufferContent", "ChangeMyContent");

function ChangeMyContent(&$content){
    $content = sanitize_output($content);
}

function sanitize_output($buffer){
    $search = array(
        '/\>[^\S ]+/s', //strip whitespaces after tags, except space
        '/[^\S ]+\</s', //strip whitespaces before tags, except space
        '/(\s)+/s'  // shorten multiple whitespace sequences
    );
    $replace = array(
        '>',
        '<',
        '\\1'
    );

    $blocks = preg_split('/(<\/?pre[^>]*>)/', $buffer, null, 
                         PREG_SPLIT_DELIM_CAPTURE);
    $buffer = '';
    foreach($blocks as $i => $block){
      if($i % 4 == 2)
        $buffer .= $block; //break out <pre>...</pre> with \n's
      else 
        $buffer .= preg_replace($search, $replace, $block);
    }

    return $buffer;
}
Файл init.php правильней всего модифицировать через ftp доступ, т.к. если модифицировать его через веб-интерфейс админ-панели 1С-Битрикс, то при малейшей ошибке в синтаксисе, вы приведете сайт в нерабочее состояние (попросту сломаете его). Чтобы этого не произошло, логиньтесь через ftp к вашему хостингу, находите файл, скачиваете его на компьютер (делаете его копию), далее работаете с ним. После изменения файла, заливаете обратно, проверяете работоспособность сайта.
Помощь проекту
Привет, меня зовут Вика! Я являюсь автором сайта Weblim.
Если Вам помогла данная статья, вы можете отблагодраить меня перечислив любую денежную сумму. Заранее спасибо!