Генерация динамического CSS - PullRequest
15 голосов
/ 28 августа 2010

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

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

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

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

Ответы [ 3 ]

15 голосов
/ 28 августа 2010

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

А что если вы сгенерируете этот CSS один раз?

  1. CSS по умолчанию: /common/css.css
  2. Пользователь настраивает CSS, теперь <link /> элементов указывает на /user-specific/123.css?ts=123123123. 123, конечно, является идентификатором члена, а параметр ts содержит метку времени - дату последней модификации CSS
  3. Убедитесь, что ваш генератор CSS устанавливает правильные заголовки HTTP, отвечающие за кэширование на стороне клиента
  4. Пользовательский браузер запрашивает файл CSS - сервер отвечает простым заголовком 304 Not Modified - нет необходимости в каком-либо выполнении скрипта или загрузке содержимого
  5. Когда участник изменяет свой CSS, вы просто обновляете ts - еще раз требуется только один запрос
5 голосов
/ 28 августа 2010

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

0 голосов
/ 02 июля 2011

Вы можете попробовать django mediagenerato, на самом деле я прочитал этот вопрос, и я искал решение, подобное вам, затем я обнаружил, что Django-mediagenerator

Я еще не пробовал, ноэто кажется решением.

...