2010-07-07 4 views
0

JAWR을 사용하여 CSS와 Javascript를 묶습니다. 그것은 엄청나게 다운로드 된 히트 수와 바이트 수를 줄였습니다. 그러나 최근에 우리는 "제어 할 수없는"css 파일에서 "찾을 수 없음"(404) 코드를 반환하는 문제가 발생했습니다. 우리에게는 해결책이 있지만 더 나은 것이 있는지 궁금합니다.JAWR은 번들 파일의로드를 무시합니다.

CSS 파일의 표준 세트에 대한 CSS 묶음을 정의하고이를 사용하여로드합니다. 또한 "레거시"레이아웃을 정의하는 한 쌍의 비표준 CSS 파일도 있습니다. 그들은 함께로드됩니다. 마지막으로 CSS를 제공하는 JAWR 서블릿은 web.xml의 url 패턴 "* .css"에 바인딩되었습니다. 이 구성을 사용하면 태그에서 css 파일을 요청하면 404 코드가 반환됩니다. 문제를 해결할 수있는 JAWR 속성 설정 조합을 찾을 수 없습니다.

우리가 해낸 해결책은 "매핑"매개 변수를 추가, web.xml의 JAWR 서블릿 구성을 수정하는 것이 었습니다 :

<servlet> 
    <servlet-name>CssServlet</servlet-name> 
    <servlet-class>net.jawr.web.servlet.JawrServlet</servlet-class> 
    <init-param> 
     <param-name>configLocation</param-name> 
     <param-value>/jawr.properties</param-value> 
    </init-param> 
    <init-param> 
     <param-name>type</param-name> 
     <param-value>css</param-value> 
    </init-param> 
    <init-param> 
     <param-name>mapping</param-name> 
     <param-value>/jawrcss/</param-value> 
    </init-param> 
    <load-on-startup>2</load-on-startup> 
</servlet> 

우리는 CssServlet의 URL 패턴을 변경하는 "/ jawrcss/* ". 이 변경에 의해, 수정되지 않은 태그로부터로드 된 css 파일은 JAWR에 의해 건드리지 않게됩니다. 하지만 우리는 JAWR의 압축 기능을 잃어 버렸습니다.

내 생각에 JAWR에서 이러한 파일을 올바르게 처리하려면 태그를 태그로 변경해야합니다. JAWR의 "고아"처리가 올바른 작업을 수행합니다. 이것은 (적어도) 몇 가지 이유 때문에 문제가됩니다. (1) 공유 코드베이스를 사용하고 있으며 일부 파일을 공유하는 다른 사용자가 JAWR을 사용하지 않기 때문에 일부 파일을 수정할 수 없습니다. (2) 일부 파일은 JavaScript를 사용하여 CSS를 동적으로로드하므로 JAWR 지원과 결합하는 방법을 알지 못합니다.

그럼 내 질문은 무엇입니까?

  1. JAWR이 태그에서로드 된 CSS 파일을 처리하도록 할 수 있습니까? (주된 질문입니다.)
  2. Javascript가 탑재 된 CSS에서 JAWR을 사용할 수있는 방법이 있습니까?

답변

1

JavaScript 로딩 된 CSS (또는 해당 JS는 JS)의 경우 JAWR의 스크립트 로더 (여기에서 설명 됨 - http://jawr.java.net/docs/plain_html.html)를 사용할 수 있습니다. 스크립트 로더를 사용하면 트레이드 오프가된다는 것을 명심하십시오 (위의 마지막 단락에서 설명한 내용을 참조하십시오)

질문 1)에 대해 태그 란 어떤 태그를 의미합니까? JSP 태그?

0

서블릿에 <init-param> 매핑을 사용하고 서블릿을 해당 URL에 바인딩 할 수 있습니다.

예제 Jawr servlet documentation에서 :

... 
    <servlet> 
      <servlet-name>JavascriptServlet</servlet-name> 
      <servlet-class>net.jawr.web.servlet.JawrServlet</servlet-class> 
      <init-param> 
        <param-name>configLocation</param-name> 
        <param-value>/jawr.properties</param-value> 
      </init-param> 
      <init-param> 
        <param-name>mapping</param-name> 
        <param-value>/jsJawrPath/</param-value> 
      </init-param> 
      <load-on-startup>1</load-on-startup> 
    </servlet> 
    ... 

    <servlet-mapping> 
      <servlet-name>JavascriptServlet</servlet-name> 
      <url-pattern>/jsJawrPath/*</url-pattern> 
    </servlet-mapping> 
관련 문제