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

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

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

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

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

15
задан cloudshao 28 August 2010 в 05:59
поделиться

2 ответа

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

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

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

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

5
ответ дан 1 December 2019 в 03:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: