Вопрос

Как создать динамический CSS и JavaScript на лету (с использованием PHP). Это необходимо сделать, поскольку разные страницы иногда имеют разный набор элементов, поэтому перенос и отправка большого CSS / JS каждый раз будет излишним. И почему на многих сайтах есть такие теги ссылок:

<link rel='stylesheet' type='text/css' href='css/style.css?pg_id=43&post=62'>

Как CSS узнает параметры GET?

Поскольку для этого может потребоваться перезапись URL-адреса или использование функции заголовка, приведите краткие примеры

Это было полезно?

Решение

Итак, здесь есть несколько разных подходов. Во-первых, если у вас есть доступ к файлам виртуального хоста apache, вы можете настроить CSS для чтения интерпретатором php. Я никогда не делал этого и точно не рекомендовал бы это, но пример:

<VirtualHost *:80>
  AddType application/x-httpd-php .css
</VirtualHost>

Это также можно сделать в вашем файле .htaccess.

Кроме того, вы можете сделать ссылку, как

<link rel='stylesheet' type='text/css' href='css/style.php?pg_id=43&post=62'>

и положи

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

как первая строка.

Я никогда не задумывался над техникой Виниция, но я не сомневаюсь, что у него тоже есть свои преимущества и недостатки.

PS - иногда переменные GET используются для целей кэширования (или фактически для предотвращения кэширования, добавляя текущую метку времени unix к ссылке css с помощью php, как

<link href="style.css?<?php echo time()" type="text/css" rel="stylesheet" />

Другие советы

Запрос к файлу .css или .js может быть перенаправлен в скрипт PHP с использованием, например, .htaccess (в Apache), поэтому даже если атрибут src равен " style.css " ;, это на самом деле PHP-скрипт, который отвечает пользователю.

Ваши файлы CSS и Javascript кэшируются, я бы не рекомендовал обслуживать файлы различных таблиц стилей / js, если их размер не превышает > 200 КБ.

И да, вы можете ссылаться на любую серверную страницу с параметрами (.php или любым другим расширением), если она возвращает правильный Content-Type для этого файла.

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

Простой пример:

<link rel="stylesheet" type="text/css" href="/css.php?color=wide-red">

<?php
header('Content-Type', 'text/css; charset=utf-8');
$colorScheme = (string)

Ваши файлы CSS и Javascript кэшируются, я бы не рекомендовал обслуживать файлы различных таблиц стилей / js, если их размер не превышает > 200 КБ.

И да, вы можете ссылаться на любую серверную страницу с параметрами (.php или любым другим расширением), если она возвращает правильный Content-Type для этого файла.

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

Простой пример:

<*>

Вы можете использовать echo, вы можете использовать систему шаблонов, вы можете извлекать другие css-файлы с помощью file_get_contents, главное, вам нужно отправить правильный Content-Type, получить правильные параметры и иметь запасной вариант по умолчанию, если параметров нет даны.

GET['color']; switch ( $colorScheme ) { case 'wide-red': $bgColor = 'c0c0c0'; $fgColor = 'ffffff'; $width = '1280px'; break; case 'normal-gray': $bgColor = '333333'; $fgColor = 'ffffff'; $width = '960px'; } break; } ?> body { background:<?php echo $bgColor;?>; color:<?php echo $fgColor;?>; width:<?php echo $width;?>; }

Вы можете использовать echo, вы можете использовать систему шаблонов, вы можете извлекать другие css-файлы с помощью file_get_contents, главное, вам нужно отправить правильный Content-Type, получить правильные параметры и иметь запасной вариант по умолчанию, если параметров нет даны.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top