Простое сжатие CSS файлов

Для больших проектов, которые имеют много css файлов большого размера, сжатие файлов стилей может немного ускорить загрузку страниц. Почти в каждом css файле можно найти куски закомментированного кода, повторы пробелов, табуляцию — все это можно удалить из файлов, а так же можно избавиться от переходов на новую строку. Помимо удаления лишних символов, будет полезно собрать все файлы в один файл, это тоже ускоряет загрузку. Все эти действия наглядно продемонстрирует ниже приведенный рецепт.
Пример:
// массив с путями до css файлов 
$css_array = array( 
    'css/style_1.css', 
    'css/style_2.css' 
); 
// путь, куда будет сохранен сжатый файл 
$new_file = "css/compression_file.css"; 
// вызываем функцию сжатия 
$result = compression_files($css_array, $new_file); 
var_dump($result); // вывод результата 
 
/** 
*   Функция для сжатия CSS файлов 
*   Удаляет комментарии, табуляцию,  
*   переходы на новую строку и повторяющиеся пробелы 
*   А также собирает все файлы в один 
* 
*   @var $files_css array  - массив путей 
*   до css файлов, которые необходимо сжать 
* 
*   @var $new_file  string - путь, куда будет  
*   сохранен сжатый файл 
*
 
*   @return bool - результат 
*/ 
function compression_files($files_css, $new_file) { 
    // получаем содержимое всех css файлов 
    $content_css = ""; 
    foreach($files_css as $one_file){ 
    $content_css .= @file_get_contents($one_file); 
    // если какой-то из файлов  
// не получилось прочитать 
    if(!$content_css) return false;  
    }   
    // удаляем комментарии  
    $content_css = preg_replace( 
'!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', 
$content_css 
    ); 
    // удаляем табуляции и переходы на новую строку 
    $content_css = str_replace( 
    array("\r\n", "\r", "\n", "\t"), ' ', 
$content_css 
    ); 
    // удаляем повторяющиеся пробелы 
    $content_css = preg_replace( 
'/ {2,}/', ' ', $content_css 
  );      
    // сохраняем результат в файл 
    $css_file = fopen ($new_file, "w+");   
    fwrite($css_file, $content_css);   
    $result_save = fclose($css_file);       
    // вернем результат сохранения 
    return $result_save; 
}
Теги:
css
Добавлено: 30 Марта 2018 06:15:36 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...