Препроцессор CSS или PHP?

Если я пишу код на PHP, есть ли причина, по которой я бы использовал препроцессор CSS вместо PHP? Например, я мог бы использовать PHP в моем файле CSS, имея это в моем заголовке:

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

Таким образом, я мог бы передавать ему переменные, такие как style.php?color=#000

Или я мог бы использовать что-то вроде LESS для предварительной обработки моего CSS. Если я использую less.js, я не уверен, как мне удастся передать переменные, как в предыдущем примере.

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

Может ли кто-нибудь рассказать мне немного больше о том, почему я буду использовать один над другим, и / или как передать переменные в мой .less-файл, если я использовал less.js?

Теперь я слышал, что файлы PHP CSS не могут быть кэшированы, поэтому я могу понять, почему это будет проблемой, особенно если файл CSS был большим.

Файлы PHP CSS можно кэшировать, но если вы передадите им динамические значения, точка кэширования обычно теряется. Если у вас есть динамическое значение, которое может меняться с каждым запросом, кеширование становится бессмысленным.

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

Как правило, гораздо проще использовать статические файлы CSS и объявлять все динамические значения в теле страницы:

 <!-- the static style sheet declares all the static values --> <link rel="stylesheet" type="text/css" href="static.css"> <!-- now you override all the dynamic values --> <style> .classname { color: <?php echo $color; ?> } </style> 

Таким образом, вы можете иметь динамические значения, как вам заблагорассудится, но вы все же избегаете использования большого количества данных CSS, обрабатываемых PHP.

Любые и все HTTP-запросы могут быть кэшированы, вы просто генерируете соответствующие заголовки кеша, см. Rfc2616 .

Интересно, что кеширование будет работать очень хорошо, потому что, если ваши значения GET изменяются, вы НЕ хотите, чтобы PHP был кэширован в любом случае. Так что продолжайте и наслаждайтесь их использованием.

Часть вашего css должна быть примерно такой:

 <?php header("Content-type: text/css"); ?> 

Вот очень интересное руководство по этому вопросу: http://css-tricks.com/snippets/php/intelligent-php-cache-control/

Помимо кеширования браузера, статические файлы намного лучше кэшируются на стороне сервера:

Статические файлы CSS могут быть кэшированы в память (и даже предварительно сжаты с некоторыми серверами, такими как nginx), что позволяет вам обслуживать их из домена cookie без статического обслуживания. Использование веб-сервера, такого как nginx, может создать огромный прирост производительности, поскольку используется меньше ОЗУ. Если у вас нет большого количества ОЗУ или большого трафика, разница может быть огромной.

Если у вас есть небольшой веб-сайт, это не имеет большого значения.