При динамическом добавлении CSS в CMS я должен записать его в БД или в файл - PullRequest
1 голос
/ 16 марта 2009

Я работаю над CMS и хочу добавить CSS с помощью административной панели управления.

Когда я добавляю css, я должен просто добавить его в конец имеющейся у меня таблицы стилей или лучше добавить данные в БД, а затем получить их с помощью обработчика.

С моей точки зрения, они оба имеют свои преимущества.

запись в файл:
Это просто и требует очень мало кода
Файл является переносимым и может быть скопирован как любой другой файл CSS

запись в БД:
У меня больше контроля
Я могу загрузить только те классы, которые мне нужны для каждого документа

Ответы [ 3 ]

2 голосов
/ 16 марта 2009

Сделав оба в предыдущих жизнях, я думаю, что ответ зависит от того, кто поддерживает CSS.

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

Если это интерфейс для пользователя типа веб-разработчика, который понимает концепции файлов, и вы хотите дать им полный доступ для написания любых CSS-файлов, которые им нравятся (и вы им доверяете!), Тогда я бы сохранил его как файл (если бы я был разработчиком, я бы хотел, чтобы он использовал мой сырой CSS). Однако я бы не стал добавлять его в существующую таблицу стилей (при условии, что это базовый набор стилей по умолчанию для сайта) У меня была бы отдельная таблица стилей для пользовательских стилей, вызываемая на странице с отдельным тегом ссылки. Это позволит отделить «код» сайта от его «контента». Обратите также внимание на то, что здесь говорит Жаф-Бен Дугид о том, что браузер не кэширует старые версии, добавляя какой-либо параметр версии в URL.

запись в БД: у меня больше контроля могу загружать только те классы, которые мне нужны каждый документ

Я бы сказал, что только загрузка классов для одного документа будет плохой идеей. Браузеры настроены на кэширование CSS, поэтому вам почти всегда будет лучше вызывать весь ваш CSS из внешних файлов с соответствующими заголовками кэширования.

2 голосов
/ 16 марта 2009

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

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

1 голос
/ 16 марта 2009

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

Одним из способов решения этой проблемы является включение строки версии где-нибудь в вызов таблицы стилей (например (из SO)):

<link rel="stylesheet" href="/Content/all.min.css?v=2644">

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...