2015-02-24 65 views
0

问题:我一直在使用我试图spectrum.js动态变化少的变量在.NET

解决这个带点使用为让用户有按钮,图标,文字颜色不同的颜色按自己的喜好我创建了一个.less文件并添加了所有值。现在的问题是,我得从录入数据库的基础上与loggedInUser值,并有动态改变

@back-color: blue; 
@font-color: red; 

为不同的值,这必须完成运行时不编译时间。我知道这会花费我一些延迟,但我不知道如何解决它其他明智的。

我一直在想不同的解决方案,而有一个更小的文件,为什么不节省时间,我保存在数据库中创建一个CSS文件,当用户获取登录创建一个CSS文件,并注入到头

<link href="~/Content/dynamic.css" rel="stylesheet" /> 

有人可以帮助我或任何有关此建议?

任何帮助将不胜感激

回答

0

选项1 实现对资源的特殊处理程序,代表的CS用户定制。 此处理程序必须:

  1. 制作查找(由用户id)来缓存,其中已经呈现更少(即CSS)被存储;
  2. 如果缓存有请求用户的条目,那么写入css到响应并完成处理该请求;
  3. 如果缓存拥有的用户没有条目,然后渲染少了这个用户,将其存储在缓存中,然后转至步骤2.

你也应该当用户改变其颜色主题删除/更新缓存条目。 您可以根据需要实现高速缓存:在内存中,数据库内部或命名(例如)%userId%.css的静态文件内部。

选项2 而不是在服务器端渲染较少(并消耗服务器资源),您可以动态地在客户端上较少渲染。 〔实施例:http://jsbin.com/wiqosutexe/5/edit?html,js,output

  1. 包括lessjs http://lesscss.org/#download-options;
  2. 为客户端脚本提供更少的模板(使用ajax获取,包含在脚本本身或其他方面);
  3. 使用用户偏好设置替换为较少的模板。
  4. 渲染模板并将结果(纯CSS)插入到动态创建的样式标记中。
+0

基本上用户wldnt可以选择更改主题。我的意思是说,当用户使用http://example.com/login/salman时,他会得到他最新的变化(颜色,字体图标颜色),所以如果我选择2,这意味着用户将首先获得默认颜色,然后将得到他喜欢的主题。我不能去缓存,因为我不知道用户何时对他的主题进行了更改。这就是为什么我喜欢在服务器端做更改更少的CSS,并得到它在每一个F5你说的是它成功的方式/? – Salman 2015-02-25 09:15:01

+0

是的,选项2更适合单页应用程序(页面重新加载很少)。如果您实现了老式的Web应用程序,那么请使用选项1.如果您无法确定用户何时更改其主题设置,那么您可以实现简单缓存,其中每个记录在N分钟后过期。 – 2015-02-25 12:01:37