<< Выполнить запрос curl к reg.api Изменение размера изображения средствами PHP >>

Сжатие CSS файлов с помощью PHP

Когда вы используете красивый и утонченный дизайн сайта, ваши CSS файлы стилей могут стать очень большого размера, на загрузку которых может понадобиться значительное время. На этот случай у меня есть 3 способа для сжатия CSS файлов с помощью PHP.

1-й способ

Для того чтобы добиться желаемого успеха, для начала необходимо переименовать ваш .css файл в .css.php.

Убедитесь что вы импортировали его в html файл уже с новым именем:

<link rel="stylesheet" type="text/css" media="screen" href="style.css.php" />

После того как вы успешно переименовали ваш CSS файл, необходимо отредактировать его и добавить следующий код в начало файла:

<?php if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header("Content-type: text/css"); ?>

Затем добавить следующую строку в конец CSS файла и сохранить его.

<?php if(extension_loaded('zlib')){ob_end_flush();}?>

Вот и все. Данный способ является полезным и эффективным.

2-й способ

Данный способ работает почти также как и предыдущий. Здесь аналогично надо переименовать .css файл в .css.php и вставить в начало файла следующий фрагмент кода:

<?php
    ob_start ("ob_gzhandler");
    header ("content-type: text/css; charset: UTF-8");
    header ("cache-control: must-revalidate");
    $offset = 60 * 60;
    $expire = "expires: " . gmdate ("D, d M Y H:i:s", time() + $offset) . " GMT";
    header ($expire);
?>

Единственное что отличает данный способ от предыдущего, это то что достаточно вставить код только в начало CSS файла.

3-й способ

И вот, я дошел до своего любимого способа, который использую когда мне необходимо сжать CSS файлы.

<?php
  function compress($buffer) {
    /* удалить комментарии */
    $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
    /* удалить табуляции, пробелы, символы новой строки и т.д. */
    $buffer = str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $buffer);
    return $buffer;
  }
  header('Content-type: text/css');
  ob_start("compress");
  /* css файлы */
  include('master.css');
  include('typography.css');
  include('grid.css');
  include('print.css');
  include('handheld.css');
  ob_end_flush();
?>

Вы можете спросить почему мне нравится именно он? Потому что только в этом методе не надо переименовывать CSS файл в .php :) Данный способ сжатия CSS файлов можно использовать уже в новых проектов без головной боли с переименованием. В данном способе используется регулярное выражение для очистки CSS от комментариев, табуляций, пробелов и т.д.



14.05.2019 73 Gor Abrahamyan -> web developer : views