Сокращение файлов JavaScript, необходимых для A4J JSF Richfaces

Меня попросили предложить некоторые улучшения производительности для сайта, который использует JSF/Richfaces/Seam/A4J.

Одна вещь, которую я заметил, заключается в том, что для A4J загружается много JavaScript. Вот список файлов с одной страницы:

/a4j/g/3_3_3.Finalorg.ajax4jsf.javascript.AjaxScript        
/a4j/g/3_3_3.Finalorg.ajax4jsf.javascript.PrototypeScript   
/a4j/g/3_3_3.Finalorg.ajax4jsf.javascript.ImageCacheScript  
/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/browser_info.js
/a4j/g/3_3_3.Finalorg/ajax4jsf/javascript/scripts/form.js   
/a4j/g/3_3_3.Finalscripts/tabPanel.js   
/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/skinning.js  
/a4j/g/3_3_3.Finalprototype.js  
/a4j/g/3_3_3.Finalscriptaculous.js

Являются ли эти файлы статичными для версии JSF, которую мы используем, или они создаются динамически на основе команд A4J, которые помещаются в наш html? Я задаюсь вопросом, возможно ли безопасно объединить все это в один файл, так как большинство из них очень маленькие? Если бы я сделал это, как бы я остановил добавление этих файлов в отображаемый HTML?

1 ответ

Решение

Содержание ресурсов не является динамическим. Richfaces добавляет определенный ресурс для каждого компонента зависимостей.

Я был в той же ситуации, где выступление было на первом месте. Я рассмотрю действия, которые я предпринял, чтобы получить один сжатый пакет richfaces для js, а другой для css.

Прежде всего вам нужно добавить следующие параметры в yout web.xml

<context-param>
    <param-name>org.richfaces.LoadStyleStrategy</param-name>
    <param-value>ALL</param-value>
</context-param>
<context-param>
    <param-name>org.richfaces.LoadScriptStrategy</param-name>
    <param-value>ALL</param-value>
</context-param>

Затем загрузите страницу и с помощью firebug или любого другого инструмента извлеките ресурсы и сохраните их в свой собственный обслуживаемый файл, например richfaces.bundle.js и richfaces.bundle.css.

После этого отключите скрипт и загрузку стиля:

<context-param>
    <param-name>org.richfaces.LoadStyleStrategy</param-name>
    <param-value>NONE</param-value>
</context-param>
<context-param>
    <param-name>org.richfaces.LoadScriptStrategy</param-name>
    <param-value>NONE</param-value>
</context-param>

Другой подход заключается в использовании JAWR, который позволяет работать с отдельными файлами ресурсов и обслуживать их в сжатом и связном виде. С помощью JAWR вы можете извлекать ресурсы, специфичные для компонентов Richfaces, и загружать их по мере необходимости. например, страница с таблицей данных и поведением ajax загрузит только зависимые ресурсы, которые JAWR сожмет в один пакет. Такой подход позволяет улучшить возможности обслуживания.

Другие вопросы по тегам