Contents
ADF Faces Tuning
General
* User partial page navigation
* Use page templates
– Avoid using <f:subview> whenever possible
– Avoid long IDs
* Minimize ADF rich client geometry management
– Minimize number of child components within a parent geometry managed component such as:
PanelAccordion PanelStretchLayout PanelTabbed BreadCrumbs NavigationPane PanelSplitter Toolbar Toolbox Table Train
* Minimize component overflow by setting a big enough initial size
– The components that have built-in support for overflow are:
PanelTabbed BreadCrumbs NavigationPane PanelAccordion Toolbar Train
* Use PPR (partial page rendering) whenever possible
– Use panelTabbed (supports PPR) instead of navigationPane (no PPR)
* Cache resources whenever possible
– Cache all static resources (e.g. setup F5 Big-IP rules)
* Define custom styles at the top of the page
– Use metaContainer facet
<af:document title="#{attrs.documentTitle}" theme="dark"> <f:facet name="metaContainer"> <af:group><![CDATA[ <style type="text/css"> .TabletNavigationGlobal { text-align: right; padding-left: 0px; padding-right: 10px; white-space: nowrap; } HTML[dir=rtl] .TabletNavigationGlobal { text-align: left; padding-left: 10px; padding-right: 0px; } </style> ]]> <af:facetRef facetName="metaContainer"/> </af:group> </f:facet> <af:form ...> <af:facetRef facetName="body"/> </af:form> </af:document>
* Bundle custom JavaScript code and include needed module in client side use:
<af:resource type="javascript" source=" "/>
trinidad-config.xml Configurations
* Disable debug-ouput element (set to FALSE)
* Disable animation
web.xml Configurations
* Minimize state token cache size:
org.apache.myfaces.trinidad.CLIENT_STATE_MAX_TOKENS=
(2 to support one back button click) or (1 to disable support for back button)
* Disable test automation:
oracle.adf.view.rich.automation.ENABLED=FALSE (default)
* Disable client side assertions in web.xml:
oracle.adf.view.rich.ASSERT_ENABLED=FALSE (default)
* Disable JavaScript profiler:
oracle.adf.view.rich.profiler.ENABLED=FALSE
* Disable resource debug mode (so that static resources can be cached):
org.apache.myfaces.trinidad.resource.DEBUG=FALSE
* Disable timestamp checking:
org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION=FALSE (default)
* Disable css file checking:
org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION=FALSE
* Enable content compression:
DISABLE_CONTENT_COMPRESSION=FALSE
* Enable JavaScript obfuscation(to reduce file size):
org.apache.myfaces.trinidad.DEBUG_JAVASCRIPT=FALSE
* Enable library partitioning:
oracle.adf.view.rich.libraryPartitioning.DISABLED=FALSE
* Disable checking JSP file modifications
oracle.adf.view.rich.CHECK_FILE_MODIFICATION=FALSE
* oracle.adf.view.rich.CLIENT_STATE_METHOD=token (default)?
* oracle.adf.view.rich.LOGGER_LEVEL=OFF
<context-param> <param-name>oracle.adf.view.rich.LOGGER_LEVEL</param-name> <param-value>OFF</param-value> </context-param>
Component Attributes
* Use immediate in certain cases
* Prefer rendered attribute over visible attribute
* Use client-side events whenever possible and prevent event propagation to server side (e.g. cancelling event at the end of processing)
* Use id attribute that is less than seven characters
* Use client-side components when necessary by useing clientComponent attribute
* Set the childCreation attribute on af:popup to deferred for a server-side performance enhancement.
Table and Tree Component Configurations
* Keep table fetch size and iterator range size in sync
* Disable column stretching (default)
* Minimize use of header rows and frozen columns
DVT Components
* Modify the RangeSize attribute
* Minimize vertical text
Others
* Turn on database table indexing when using autoSuggest
ADF Server Tuning
View Objects Tuning
* Use least resource intensive view objects (read-only, insert-only, etc)
* Configure view object data fetching behavior properly:
– Fetch mode
– Fetch size
– Max fetch size
– Forward-only mode
* Consider optimize large data set
* Disable “spillover” configuration when possible (i.e. set jbo.use.pers.coll=false)
* Review SQL style configuration (e.g. -Djbo.SQLBuilder=”SQL92″)
* Use bind variables for view object queries to maximize reuse.
* Use query optimizer hints
* Use dynamic SQL generation
* Use batch processing when possible (BatchThreshold property)
* Set RangeSize equal to number of records to be displayed in UI (avoid round trips)
Application Module (AM) Tuning
* Use large AM to minimize database connection instances.
* Use lazing loading (-Djbo.load.components.lazily=true)
* Use AM pooling (configure in bc4j.xcfg file)
References
* OFM 11g R1: Oracle Application Development Framework Performance Tuning