Подтвердить что ты не робот

Создание динамического CSS

Каков наилучший способ обработки стиля, который настраивается пользователем? Как пример результата, который я ищу, этого было бы достаточно:

body {
   color: {{ user.profile.text_color }};
}

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

Пользователь не имеет доступа к файлам CSS, и мы должны предположить, что у них нет знаний в области веб-разработки.

4b9b3361

Ответ 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

Я еще не пробовал, но это швы, чтобы быть решением.