Сокращение файлов 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 сожмет в один пакет. Такой подход позволяет улучшить возможности обслуживания.