Как правильно встроить PHP-код в мои файлы CSS и JavaScript?
Как и все остальные, я храню информацию о отображении моего сайта в файлах таблиц стилей. И я хочу создать серверную cms, чтобы пользователи могли, например, изменять
цвет, размер и т.д.
Итак, как правильно встроить PHP-код в мои CSS-файлы?
Добавляет этот заголовок:
<?php header("Content-type: text/css"); ?>
И изменение расширения файла по ссылке:
<link rel="stylesheet" type="text/css" media="screen" href="style.php">
Действителен?
А как насчет JavaScript? В данный момент я повторяю теги <script type="text/javascript">
, но, возможно, есть также способ встроить все в файлы .js?
Спасибо!
3 answers
Да, это совершенно справедливо.
То же самое можно сделать и для Javascript, отправив
<?php header("Content-type: application/javascript"); ?>
Однако это не оптимально с точки зрения производительности, потому что для обслуживания этих ресурсов необходимо запустить процесс PHP.
Если у вас очень мало динамически изменяющихся свойств CSS или переменных JS, я бы подумал о том, чтобы поместить их в заголовок документа и продолжать статически обслуживать внешние файлы.
Помните, что обычно существуют нет заголовков кэширования, отправленных для PHP-файлов. Вам придется позаботиться об отправке правильных заголовков внутри вашего PHP-скрипта! Спасибо @oracle сертифицированному специалисту за напоминание.
То, что вы делаете, абсолютно справедливо.
Однако, если у вас более крупный сайт с большим количеством посетителей, вам следует позаботиться о том, чтобы просто позволить PHP "создавать" "настоящий" CSS-файл, когда ваш пользователь обновляет свой дизайн, чтобы повысить производительность ваших серверов до более необходимых вещей:
<?php
header("Content-type: text/css");
// Your database magic here to fetch the user-specific designs
// open the cached css
$cachefile = "cachedCSS/mycss.css";
if (file_exists($cachefile)) {
// the page has been cached from an earlier request
// output the contents of the cache file
include($cachefile);
// exit the script, so that the rest isnt executed
exit;
}
$fp = fopen($cachefile, 'w');
// save the contents of output buffer to the file
fwrite($fp, ob_get_contents());
// close the file
fclose($fp);
// Send the output to the browser
ob_end_flush();
Подробнее об этом читайте здесь: http://www.theukwebdesigncompany.com/articles/php-caching.php
Убедитесь, что вы анализируете php в этих файлах.
В .htaccess
:
AddType application/x-httpd-php .php .css .js
Это гарантирует, что любые теги <?php ?>
в типах файлов, отличных от .php, будут проанализированы сервером, и код php не будет читаться пользователями.