Если я пишу код на 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, может создать огромный прирост производительности, поскольку используется меньше ОЗУ. Если у вас нет большого количества ОЗУ или большого трафика, разница может быть огромной.
Если у вас есть небольшой веб-сайт, это не имеет большого значения.