0

다른 클라이언트의 브랜드 색이 다른 다중 클라이언트 시스템이 있습니다.MVC 번들을 사용하여 LESS 파일에서 사용자 정의 CSS 생성

이 색상은 DB에 저장되며 저의 모든 파일에서 @color {1-3}로 참조됩니다.

우리는 색이없는 파일을 유지 보수하는 데이 색이 사용 된 모든 장소에 대한 참조를 사용했습니다. 클라이언트 중립적 인 상황에서 우리는 브랜드 컬러로 표준 번들을 렌더링 할 것이지만, 클라이언트 영역 내에서 클라이언트 색상이 DB에서 변경되었을 때 생성 된 저장된 CSS 파일을 주입 할 것입니다.

괜찮 았지만 colours.less 파일을 유지하는 것은 다소 다루기 힘들어졌습니다. 그래서 저는 CSS를 "실시간"으로 렌더링하여 수동으로 생성 할 필요가 없도록했습니다. 분명히 모든 페이지로드가 상당히 집중적 인 CSS 생성으로 서버를 망칠 것이기 때문에이 모든 요청을 수행 할 수 없습니다.

제 질문은 번들링이나 다른 형식의 캐싱을 사용하여 서버를 망치질 않고 의 CSS 파일을 저장하지 않고도이 CSS를 즉시 생성 할 수 있습니까?

사용자 지정 HTTP 처리기를 구현할 수
+0

이것을 달성하는 방법을 찾았습니까? 나는 똑같이하려고한다. – Bob

답변

0

:

public class CustomHandler : IHttpHandler 
{ 
    #region IHttpHandler Members 

    public bool IsReusable 
    { 
     // Return false in case your Managed Handler cannot be reused for another request. 
     // Usually this would be false in case you have some state information preserved per request. 
     get { return true; } 
    } 

    public void ProcessRequest(HttpContext context) 
    { 
     var sb = new StringBuilder(); 
     // read values from db and cache them with HttpContext.Current.Cache 
     sb.Append(".black : { color: 'black'; }"); 

     context.Response.Clear(); 
     context.Response.ContentType = "text/css"; 
     context.Response.Write(sb.ToString()); 
    } 

    #endregion 
} 

의 Web.config :

<system.webServer>  
    <handlers> 
     <add name="ColorsHandler" verb="GET" path="colors.axd" type="WebApplication3.Infrastructure.CustomHandler, WebApplication3, Version=1.0.0.0, Culture=neutral" /> 
    </handlers> 
    </system.webServer> 

유일한 제한은 MVC 번들 정적을 처리 할 수 ​​있기 때문에 당신이 MVC 번들로이 핸들러를 참조 할 수 있다는 것입니다 파일. 따라서 스타일 시트로 참조해야합니다 :

<link rel="stylesheet" href="~/colors.axd" type="text/css">