This article discusses strategies and best practices that you can implement to reduce bottlenecks and optimize the performance of your AEM Forms deployment.
You can configure and control the caching strategy for AEM Forms using the Mobile Forms Configurations component in the AEM Web Configuration Console at:
https://'[server]:[port]'/system/console/configMgr
https://'[server]:[port]'/lc/system/console/configMgr
The available options for caching are as follows:
The default cache settings for AEM Forms may not be good enough to achieve optimal performance. Therefore, it is recommended to use the following settings:
If you use AEM Dispatcher to cache adaptive forms, it also caches adaptive form which contains forms with pre-filled data. If such forms are served from the AEM Dispatcher cache, it may lead to serving pre-filled or stale data to the users. So, use AEM Dispatcher to cache adaptive forms which do not use pre-filled data. Moreover, a Dispatcher cache does not auto-invalidate cached fragments. So, do not use it to cache form fragments. For such forms and fragments, use Adaptive forms cache.
For optimal performance, it is recommended to use the following JVM init
arguments to configure the Java heap
and PermGen
.
set CQ_JVM_OPTS=%CQ_JVM_OPTS% -Xms8192m
set CQ_JVM_OPTS=%CQ_JVM_OPTS% -Xmx8192m
set CQ_JVM_OPTS=%CQ_JVM_OPTS% -XX:PermSize=256m
set CQ_JVM_OPTS=%CQ_JVM_OPTS% -XX:MaxPermSize=1024m
The recommended settings are for Windows 2008 R2 8 Core and Oracle HotSpot 1.7 (64-bit) JDK and should be scaled up or down as per your system configuration.
Adaptive forms and HTML5 forms render in HTML5 format. The resultant output could be large depending on factors like the form size and images in the form. To optimize the data transfer, the recommended approach is to compress the HTML response using the web server from which the request is being served. This approach reduces the response size, network traffic, and the time required to stream data between server and client machines.
For example, perform the following steps to enable compression on Apache Web Server 2.0 32-bit with JBoss®:
The following instructions do not apply to any server other than the Apache Web Server 2.0 32-bit. For steps specific to any other server, see the corresponding product documentation.
The following steps demonstrate changes required to enable compression with Apache Web Server
Obtain the Apache web server software applicable to your operating system
Apache can communicate to CRX using the HTTP protocol. The configurations are for optimization using HTTP.
Uncomment the following module configurations in APACHE_HOME/conf/httpd.conf
file.
LoadModule proxy_balancer_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_http.so
LoadModule deflate_module modules/mod_deflate.so
For Linux®, the default APACHE_HOME
is /etc/httpd/
.
Configure the proxy on port 4502 of crx.
Add following configuration in APACHE_HOME/conf/httpd.conf
configuration file.
ProxyPass / https://<server>:4502/
ProxyPassReverse / https://<server>:4502/
Enable Compression. Add following configuration in APACHE_HOME/conf/httpd.conf
configuration file.
For HTML5 forms
<Location /content/xfaforms>
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
#Don't compress
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
#Dealing with proxy servers
<IfModule mod_headers.c>
Header append Vary User-Agent
</IfModule>
</IfModule>
</Location>
For adaptive forms
<Location /content/forms/af>
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
#Don't compress
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
#Dealing with proxy servers
<IfModule mod_headers.c>
Header append Vary User-Agent
</IfModule>
</IfModule>
</Location>
To access the crx server, use https://'server':80
, where server
is the name of the server on which the Apache server is running.
You can experience slow performance on the servers running an antivirus software. An always-on antivirus (on-access scanning) software scans all the files of a system. It can slow down the server and the performance of the AEM Forms is impacted.
To improve the performance, you can direct the antivirus software to exclude the following AEM Forms files and folders from always on (on-access) scanning:
AEM Installation directory. If it is not possible to exclude the complete directory, exclude the following:
Application server temporary directory. The default location is:
(AEM Forms on JEE only) Global Document Storage (GDS) directory. The default location is:
(AEM Forms on JEE only) AEM Forms Server logs and temporary directory. The default location is:
If you are using a different location for GDS and temporary directory, open AdminUI at https://'[server]:[port]'/adminui
, navigate to Home > Settings > Core System Settings > Core Configurations to confirm the location in use.
If the AEM Forms Server performs slow even after excluding the suggested directories, then exclude the Java™ executable file (java.exe) also.