2015-02-24 90 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