Поскольку у вас также есть PHP в теге, я собираюсь предложить некоторые варианты на стороне сервера.
Самое простое решение - это то, что большинство людей предлагают здесь. Проблема, с которой я обычно сталкиваюсь, заключается в том, что это может привести к тому, что ваши файлы CSS или теги ‹style› будут в 20 раз больше, чем ваши html-документы, и может вызвать замедление браузера при анализе и обработке тегов, которые он не может понять -moz-border-radius
vs. -webkit-border-radius
Второе лучшее решение (я нашел) состоит в том, чтобы php выводил ваш фактический файл css, т.е.
<link rel="stylesheet" type="text/css" href="mycss.php">
куда
<?php
header("Content-Type: text/css");
if( preg_match("/chrome/", $_SERVER['HTTP_USER_AGENT']) ) {
// output chrome specific css style
} else {
// output default css style
}
?>
Это позволяет создавать файлы меньшего размера, которые легче обрабатывать в браузере.
Однако лучший метод, который я нашел, относится к Apache. Метод заключается в использовании mod_rewrite или PerlMapToStorageHandler из mod_perl для повторного сопоставления URL-адреса с файлом в системе на основе механизма рендеринга.
скажем, ваш веб-сайт http://www.myexample.com/
и он указывает на /srv/www/html
. Для Chrome, если вы запрашиваете main.css, вместо загрузки /srv/www/html/main.css
он проверяет, есть ли /srv/www/html/main.webkit.css
, и если он существует, выводит его, иначе он выводит main.css. Для IE пробует main.trident.css
, для firefox пробует main.gecko.css
. Как и выше, это позволяет мне создавать меньшие, более целенаправленные файлы css, но также позволяет мне лучше использовать кэширование, так как браузер попытается повторно загрузить файл, а веб-сервер предоставит браузеру правильные 304, чтобы сообщить об этом. , вам не нужно повторно загружать его. Это также дает моим веб-разработчикам немного больше свободы без необходимости писать внутренний код для целевых платформ. У меня также есть файлы .js, которые также перенаправляются на механизмы javascript, для main.js
, в chrome он пытается main.v8.js
, в сафари main.nitro.js
, в firefox main.gecko.js
. Это позволяет выводить определенный javascript, который будет быстрее (меньше кода тестирования браузера/тестирования функций). Конечно, разработчикам не нужно ориентироваться на что-то конкретное, и они могут написать main.js
, а не делать main.<js engine>.js
, и он будет нормально загружаться. то есть наличие файла main.js
и main.jscript.js
означает, что IE получает файл jscript, а все остальные получают js по умолчанию, то же самое с файлами css.
person
Rahly
schedule
02.12.2010