2010-08-28 140 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

我沒有嘗試過,但它接縫是一個解決方案。