Как уменьшить HTTP-запросы css?

Как уменьшить HTTP-запросы css?

1 большой файл css

или один файл css, который импортирует все остальные css

это то же самое?

В чем преимущество использования этого

@import url('/css/typography.css');
@import url('/css/layout.css');
@import url('/css/color.css');

Ответы

Ответ 1

1 большой файл css или один файл css, который импортирует все остальные css это то же самое?

Нет, поскольку клиенту все равно необходимо загрузить каждый файл CSS (по одному HTTP-запросу)

Некоторые ссылки, чтобы узнать больше об уменьшении HTTP-запросов:

Если вы используете Firefox, я настоятельно рекомендую Firebug, который предлагает представление с подробной информацией о HTTP-запросах.
EDIT:
Как отмечает flybywire в комментариях: YSlow - расширение Firefox, которое интегрируется с Firebug для анализа производительности веб-страницы

3 простых вещи, которые я бы поставил первым:

  • Объединить глобальный CSS (то, что вы использовать на каждой странице)
  • Сжатие CSS (с YUI компрессор или какой-либо онлайн-инструмент).
  • Ввести содержимое страницы (вещи, которые не страниц)

Большинство из этих вещей также применимы к файлам Javascript.

Ответ 2

Импорт стиля по-прежнему вызывает HTTP-запрос. Я рекомендую использовать только один файл CSS. Вы можете объединить несколько файлов CSS с помощью импорта с серверной стороны, чтобы отправить один файл без управления всеми вашими правилами CSS из одного файла.

Ответ 3

Если вы используете asp.net mvc - просмотрите этот подход. Все еще работает как шарм. В основном - он использует httphandler для объединения, сжатия и кэширования файлов активов.

Но это asp.net специфично. Не могу сказать, помогает ли это.


Offtopic:

Тот же метод, который вы можете применить к файлам javascript (отлично, чтобы иметь хорошие структурированные js файлы и все еще - чтобы избежать многих HTTP-запросов).

Для изображений - просмотрите spriting. Этот букмарклет может быть весьма полезен.

Ответ 4

Вы хотите уменьшить количество HTTP-запросов или их размер?

Я бы рекомендовал поместить все наиболее используемые селектора в один большой файл CSS (вместе со всеми вашими используемыми библиотеками/плагинами) и минимизировать его с помощью онлайн оптимизаторов/минимизаторов

Ответ 5

Если вы собираетесь обслуживать свои файлы css из веб-фермы или это сайт с большим объемом, я бы предложил посмотреть: http://code.google.com/p/talifun-web/wiki/CrusherModule Он использует наблюдателя файлов для поиска изменений в файлах css/js. Файлы Css/js относятся к наборам файлов, указанным в файле web.config. Когда изменение обнаружено в одном из компонентов js/css файлов, он создает новый munged css или jss для набора файлов.

Он также имеет простой элемент управления для вывода ссылок на файл css/js. Элемент управления добавит запрос с хешем файла, поэтому вам гарантируется правильное содержимое файла.

Это означает, что вы можете напрямую работать с файлом munged с IIS. Затем вы можете использовать кеширование в режиме ядра. Также означает, что вам не нужно беспокоиться о ошибках реализации поддержки HTTP-заголовка:

  • ETag
  • Истекает
  • Last-Modified
  • Если-Match
  • If-None-Match
  • If-Modified-Since
  • Если-Unmodified-С
  • Unless-Modified-Since

Лучше сжать все ваши файлы js/css в один гигантский файл для всего веб-сайта, а затем динамически обслуживать только нужные файлы js/css для этой страницы. Браузеры могут кэшировать один гигантский файл, а затем больше не придется беспокоиться о загрузке css/js с вашего сайта.

Ответ 6

Вы можете использовать объединитель запросов HTTP, чтобы указать список общих файлов css, которые должны быть доставлены в виде одного мини файла css в браузер. Это уменьшит размер, а также значительно снизит количество запросов.

Хороший пример этой работы в контексте .Net: http://www.codeproject.com/KB/aspnet/HttpCombine.aspx

Ответ 7

Я написал несколько сообщений в блоге об этом. См. Нагнетание CSS в PHP. Несмотря на то, что он написан для PHP, принципы универсальны.

В основном ваша цель - уменьшить внешние HTTP-запросы. Вы можете сделать это с помощью комбинации сочетания ваших файлов CSS и/или версий ваших файлов CSS и использования будущего заголовка Expires.

Наконец, вы всегда должны использовать GZip CSS (и Javascript), если клиент принимает его.