Объединить внешние файлы CSS, чтобы уменьшить количество HTTP запросов

Чем быстрей веб-страница, тем удобней она для пользователей. Таким образом, цель состоит в том, что бы при ​​оптимизации страниц: уменьшить количество “HTTP-Request”, то есть запросов от браузера к веб-серверу! Например, если при загрузке страницы необходим файл CSS или JavaScript, отправляется запрос на веб-сервер и контент загружается. Это происходит в том случае, если содержимое не находится уже в кэше браузера пользователя.

Что можно сделать? Мы можем объединить все файлы в одном CSS вручную. Но это утомительно, запутанно и требует много усилий.

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

<?php
  header('Content-type:text/css; charset=utf-8');
  header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  function get_remote_file($url) {
    if (function_exists('curl_init')) {
      $c = curl_init($url);
      curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($c, CURLOPT_HEADER, 0);
      $file = curl_exec($c);
      curl_close($c);
      return $file;
    }
    else {
      die('Error');
    }
  }
  
  // CSS-Dateien zusammenfassen
  $content = get_remote_file('www.webdesign-klamonfra.de/css/reset.css');
  $content .= get_remote_file('www.webdesign-klamonfra.de/css/style.css');
  $content .= get_remote_file('www.webdesign-klamonfra.de/css/hinweis.css');
  $content .= get_remote_file('www.webdesign-klamonfra.de/css/print.css');
  $content .= get_remote_file('.../css/codeschnipsel.css');
  
  // Kommentare entfernen
  $content = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $content);
  
  // Tabs, Leerzeichen und Zeilenumbrüche entfernen
  $content = str_replace(array("\r\n","\r","\n","\t","\s"),"", $content);
  
  // letztes Semikolon, Leerzeichen nach Doppelpunkt und 
  // Leerzeichen vor Klammer entfernen
  $content = str_replace(array(";}",": "," {"),array("}",":","{"),$content);
  
  // Ausgabe der zusammengefassten CSS-Datei
  echo $content;
  
  // Leert den Ausgabe-Puffer und deaktiviert die Ausgabe-Pufferung
  ob_end_flush();
?>

Таким образом, теперь не все файлы CSS по отдельности интегрированы в веб-сайт, а только один php скрипт, который объединяет в себе все файлы стилей, встроенных в головной части страницы.

<link rel="stylesheet" type="text/css" 
  href="globales/css.php" />

В этом примере остался только 1 HTTP запрос к файлу “css.php” и размер от пяти HTTP запросов для отдельных файлов CSS был снижен на 200 байт.

Но, к сожалению, есть небольшое ограничение!

В анимационном заголовке на домашней странице были использованы внешние шрифты, и это должно быть прописано отдельно в заголовке каждой страницы. В противном случае Internet Explorer 10 и 11 не видят шрифт.

Оригинал / Перевод

One thought on “Объединить внешние файлы CSS, чтобы уменьшить количество HTTP запросов

  • 10/11/2017 в 20:53
    Permalink

    Здравствуйте! Статья очень кстати, только не совсем понял, как правильно это прикрутить к своей странице. У меня восемь стилей. Допустим css.php я поместил в (папку-scripts ). Как из этой папки обращаться к стилям?
    Как правильно в этом коде: // CSS-Dateien zusammenfassen
    $content = get_remote_file(‘css/bootstrap.css’);
    прописать свои стили, что бы из папки scripts обращаться в папку css
    мой сайт: такси16.рус

    Ответ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.