Фильтр GZIP значительно сократит начальное время загрузки.
Вы можете дополнительно реализовать cacheFilter для приведения производительности ваших экранов в соответствие с пользовательским интерфейсом на основе JavaScript (https://stackoverflow.com/a/35567540/5076414).
Для компонентов на стороне клиента вы можете использовать Primefaces, который является пользовательским интерфейсом на основе JQuery.
Включить фильтр GZIP в JSF
Просто добавьте это к вашему
web.xml
<filter>
<filter-name>gzipResponseFilter</filter-name>
<filter-class>org.omnifaces.filter.GzipResponseFilter</filter-class>
<init-param>
<description>The threshold size in bytes. Must be a number between 0 and 9999. Defaults to 150.</description>
<param-name>threshold</param-name>
<param-value>150</param-value>
</init-param>
<init-param>
<description>The mimetypes which needs to be compressed. Must be a commaseparated string. Defaults to the below values.</description>
<param-name>mimetypes</param-name>
<param-value>
text/plain, text/html, text/xml, text/css, text/javascript, text/csv, text/rtf,
application/xml, application/xhtml+xml, application/x-javascript, application/javascript, application/json,
image/svg+xml, image/gif, application/x-font-woff, application/font-woff2, image/png
</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>gzipResponseFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/</location>
</error-page>
и следующее к вашему
pom.xml
<dependency>
<groupId>org.omnifaces</groupId>
<artifactId>omnifaces</artifactId>
<version>1.11</version>
</dependency>
Как проверить, использует ли мой экран gzip
Чтобы увидеть, что ваш контент уже использует gzip и кеш, в вашем браузере Google Chrome -> щелкните правой кнопкой мыши на экране -> осмотрите -> щелкните вкладку сети -> обновите экран. Нажмите на изображения, значки, таблицы стилей и посмотрите, видите ли вы следующее в заголовке ответа
Content-Encoding:gzip
, если статус элемента 200