0

CSS と Javascript をバンドルするためにJAWRを使用しています。ダウンロードされるヒット数とバイト数が大幅に減少しました。しかし、最近、「制御下」にない css ファイルが「見つかりません」(404) コードを返すという問題に遭遇しました。解決策はありますが、より良い解決策があるかどうか疑問に思っています。

CSS ファイルの標準セットの CSS バンドルを定義し、それをロードするために使用します。「レガシー」レイアウトを定義するペアを含む、いくつかの非標準の css ファイルもあります。が搭載されています。最後に、CSS を提供する JAWR サーブレットは、web.xml の URL パターン「*.css」にバインドされました。この構成では、タグからの css ファイルに対する要求はすべて 404 コードを返しました。問題を解決する JAWR プロパティ設定の組み合わせを見つけることができませんでした。

私たちが思いついた解決策は、web.xml の JAWR サーブレット構成を変更して、「mapping」パラメーターを追加することでした。

    <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. タグから読み込まれた CSS ファイルを JAWR で (少なくとも圧縮して) 処理する方法はありますか? (主な質問です。)
  2. Javascript をロードした CSS で JAWR を使用する方法はありますか?
4

2 に答える 2

1

JavaScript をロードした CSS (または JS) については、JAWR のスクリプト ローダー (ここで説明 - http://jawr.java.net/docs/plain_html.html ) を使用できます。スクリプトローダーを使用するとトレードオフがあることに注意してください(上記のページの最後の段落で説明しています)

あなたの質問 1) に関して、タグとは、どのタグを意味しますか? JSPタグ?

于 2011-06-16T06:54:35.730 に答える
0

サーブレットのマッピング<init-param>を使用して、サーブレットをその URL にバインドできます。

Jawr サーブレットのドキュメントの例:

    ...
    <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> 
于 2011-07-04T16:03:49.080 に答える