CSS препроцессор или PHP? - PullRequest
       7

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

5 голосов
/ 29 января 2012

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

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

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

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

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

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

Ответы [ 3 ]

4 голосов
/ 29 января 2012

Теперь я слышал, что CSS-файлы PHP не могут быть кэшированы, поэтому я понимаю, почему это может быть проблемой, особенно если файл 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.

3 голосов
/ 29 января 2012

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

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

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

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

Вот очень интересное руководство по этому вопросу: http://css -трюкиком / сниппеты / PHP / интеллигентного PHP-кэш-контроль /

1 голос
/ 29 января 2012

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

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

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

...