Динамический CSS довольно тривиален, и хотя его приложения более ограничены (учитывая, как динамически генерируемый HTML со статической таблицей стилей решает большинство повседневных задач, а сам CSS включает несколько механизмов для достижения полудинамичности), я ' Я видел, что он использовался во многих случаях, и я использую их сам, когда мне это нужно.
Часто «динамическая» часть делает немного больше, чем объединение нескольких таблиц стилей в одну (для уменьшения количества HTTP-запросов) и минимизация их (для уменьшения использования полосы пропускания), но простые вещи, такие как подстановка переменных (например, использование переменных для цветов, используемых повсеместно таблица стилей) может сделать вашу жизнь намного проще. Однако, поскольку CSS имеет довольно простой синтаксис с небольшим количеством предостережений, для этого обычно достаточно универсальной системы обработки текста или языка сценариев, такого как PHP, поэтому вы не видите много готовых систем обработки CSS.
Может быть, вы видели их в дикой природе, не узнавая их. Серверы, отправляющие динамические сценарии, обычно используют перезапись URL-адресов, поэтому URL-адрес становится неотличимым от статически обслуживаемого содержимого. Это необходимо, потому что некоторые браузеры (особенно IE) полагаются на расширения для правильного определения типа MIME при определенных обстоятельствах, игнорируя (или отбрасывая) любые заголовки Content-Type, которые вы, возможно, отправили.
Что касается кеширования: таблицы стилей обрабатываются GET-запросами, и их кэширование абсолютно необходимо для хорошего пользовательского опыта. Вы не хотите наблюдать за обновлением страницы, поскольку она повторно загружает таблицу стилей при каждом запросе. Вместо этого вы должны поместить все параметры, которые изменяют вывод вашей обработки таблицы стилей, в строку запроса; другая строка запроса дает другой URL, что, в свою очередь, приводит к отсутствию кэша, поэтому при каждом изменении параметров таблица стилей будет перезагружаться, даже если клиент кэширует все. Если вам действительно нужен CSS, который потенциально отличается для каждого запроса и зависит от побочных эффектов, рассмотрите возможность помещения нединамической части в статически обслуживаемую таблицу стилей и выполняйте только те операции, которые динамически необходимы.