Создание динамического CSS
Каков наилучший способ обработки стиля, который настраивается пользователем? Как пример результата, который я ищу, этого было бы достаточно:
body {
color: {{ user.profile.text_color }};
}
Однако обслуживание CSS в виде представления похоже на то, что это приведет к значительным накладным расходам в файле, который постоянно запрашивается, поэтому это, вероятно, не очень хорошее решение.
Пользователь не имеет доступа к файлам CSS, и мы должны предположить, что у них нет знаний в области веб-разработки.
Ответы
Ответ 1
Однако обслуживание CSS в виде представления похоже на то, что это приведет к значительным накладным расходам в файле, который постоянно запрашивается, поэтому это, вероятно, не очень хорошее решение.
А что, если вы однажды создадите этот CSS?
- CSS по умолчанию:
/common/css.css
- Пользователь настраивает CSS, теперь
<link />
указывает на /user-specific/123.css?ts=123123123
. 123
- это, конечно, идентификатор члена, а параметр ts
содержит метку времени - дату последней модификации CSS
- Убедитесь, что ваш генератор CSS задает правильные заголовки HTTP, ответственные за кеширование на стороне клиента.
- Пользовательский браузер запрашивает файл CSS - сервер отвечает простым заголовком
304 Not Modified
- нет необходимости в загрузке или содержании script
- Когда член изменяет свой CSS, вы просто обновляете
ts
- снова нужен только один запрос
Ответ 2
Как обычно, динамически создайте CSS с помощью представления, но используйте агрессивное кеширование, чтобы оно быстро загружалось.
Ответ 3
Вы можете попробовать django mediagenerato, на самом деле я прочитал этот Q, и я искал такое решение, как вы, тогда я обнаружил, что Django-mediagenerator
Я еще не пробовал, но это швы, чтобы быть решением.