2010-08-28 92 views
15

处理用户定制风格的最佳方式是什么?正如我在寻找的结果的一个例子,这就够了:生成动态CSS

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

然而,服务CSS的观点似乎像它会导致一个不断请求的文件开销显著量,所以这可能不是一个好的解决方案。

用户无权访问CSS文件,我们必须假定他们没有Web开发知识。

回答

15

但是,将CSS作为视图服务似乎会在不断请求的文件中引起大量开销,所以这可能不是一个好的解决方案。

如果您要生成一次CSS会怎么样?

  1. 默认CSS是:/common/css.css
  2. 会员自定义CSS,现在<link />元素点/user-specific/123.css?ts=123123123123是当然的成员的标识符,并ts参数包含时间戳 - 最后CSS修改的日期
  3. 确保你的CSS发电机组负责客户端缓存
  4. 用户浏览器请求的CSS正确的HTTP头文件 - 服务器简单304 Not Modified头回答 - 有没有需要任何脚本执行或内容下载
  5. 当成员改变他的CSS,那么你只需更新ts - 再次需要只是一个单一的请求
+0

+1对我有意义。 – 2010-08-28 09:57:28

5

正常情况下通过视图动态执行CSS,但使用积极的caching以便快速加载。

+0

+1对于KISS .... – 2010-08-28 19:47:36

+1

该解决方案有点简单。 CSS基于*每个用户*并正确缓存,这意味着每种可能的设置都有不同的缓存项目。另一种方法是缓存98%的页面,但使用使用每个用户设置的动态外部包装器“

... whatever ...
”。或者,您可以使用JavaScript来调整外部类,但在这种情况下可能无法接受。 – 2010-08-29 05:31:30

0

你可以尝试django mediagenerato,其实我读了这个Q,我正在寻找像你一样的解决方案,然后我发现Django-mediagenerator

我没有尝试过,但它接缝是一个解决方案。