0

我们使用JAWR来捆绑 CSS 和 Javascript。它极大地减少了下载的点击数和字节数。但是,我们最近遇到了一个问题,导致不受“其控制”的 css 文件返回“未找到”(404)代码。我们有一个解决方案,但我想知道是否有更好的解决方案。

我们为标准的 css 文件集定义了一个 CSS 包,并使用它来加载它。我们还有一些非标准的 css 文件,包括一对定义“遗留”布局的文件。它们装有 . 最后,服务 CSS 的 JAWR servlet 绑定到 web.xml 中的 url-pattern "*.css"。使用此配置,任何来自标签的 css 文件请求都会返回 404 代码。我们找不到可以解决问题的 JAWR 属性设置组合。

我们想出的解决方案是在 web.xml 中修改 JAWR servlet 配置,添加“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. 有没有办法让 JAWR 处理(至少压缩)从标签加载的 CSS 文件?(主要问题。)
  2. 有没有办法将 JAWR 与 Javascript 加载的 CSS 一起使用?
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

您可以使用 servlet 的映射<init-param>,并将 servlet 绑定到该 url。

Jawr servlet 文档中的示例:

    ...
    <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 回答