JAWR отменяет загрузку разделенных файлов

Мы используем JAWR для объединения CSS и Javascript. Это значительно уменьшило количество скачанных хитов и байтов. Однако недавно мы столкнулись с проблемой, из-за которой CSS-файлы, которые не были "под его контролем", возвращали код "not found" (404). У нас есть решение, но мне интересно, есть ли лучшее.

Мы определили комплект CSS для стандартного набора CSS-файлов и используем его для загрузки. У нас также есть несколько нестандартных CSS-файлов, включая пару, которые определяют "устаревший" макет. Они загружены. Наконец, сервлет JAWR, обслуживающий CSS, был связан с URL-шаблоном "*.css" в web.xml. При такой конфигурации любой запрос файла css от тега возвращает код 404. Нам не удалось найти комбинацию настроек свойств JAWR, которая бы решала проблему.

Решение, которое мы придумали, состояло в том, чтобы изменить конфигурацию сервлета JAWR в web.xml, добавив параметр "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>

Мы изменили шаблон URL для CssServlet на "/jawrcss/*". С этим изменением файлы css, загруженные из неизмененных тегов, не затрагиваются JAWR. Однако мы теряем возможности сжатия JAWR для этих файлов.

Я предполагаю, что для того, чтобы JAWR правильно обрабатывал эти файлы, нам нужно поменять теги на теги, после чего "потерянная" обработка JAWR будет работать правильно. Это проблематично по (по крайней мере) нескольким причинам. (1) Мы используем базу общего кода и "не можем" изменять некоторые файлы, потому что другие, использующие эти файлы, не используют JAWR. (2) Некоторые файлы загружаются css динамически с использованием JavaScript, и я не вижу, как совместить это с поддержкой JAWR.

Итак, каков мой вопрос?

  1. Есть ли способ, чтобы JAWR обрабатывал (сжимал, по крайней мере) CSS-файлы, загружаемые из тегов? (Основной вопрос.)
  2. Есть ли способ использовать JAWR с загруженным Javascript CSS?

2 ответа

Для загруженного JavaScript JavaScript (или JS в этом отношении) вы можете использовать загрузчик сценариев JAWR (объяснение здесь - http://jawr.java.net/docs/plain_html.html). Имейте в виду, что есть компромисс с использованием загрузчика скриптов (последний абзац вышеупомянутой страницы описывает это)

Что касается вашего вопроса 1), под тегами вы подразумеваете какие теги? Теги JSP?

Вы можете использовать отображение <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> 
Другие вопросы по тегам