ICEfaces
  1. ICEfaces
  2. ICE-7258

Change default value for 'mandatoryResourceConfiguration' from null to 'none'

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.0.2
    • Fix Version/s: 2.1-Beta, 2.1-Beta2, 3.0
    • Component/s: ACE-Components
    • Labels:
      None
    • Environment:
      ICEfaces 2.1, Advanced Components Environment (ACE)
    • Assignee Priority:
      P1
    • Affects:
      Documentation (User Guide, Ref. Guide, etc.), Sample App./Tutorial, Compatibility/Configuration

      Description

      In ICEfaces 2.0.x the mandatoryResourceConfiguration parameter defaults to null, which results in all JavaScript and CSS resources for all components in the application being pre-loaded on each initial page load. This allows components to function correctly even if they are later added to the page dynamically during user interaction.

      Unfortunately, it also bloats each page load substantially (2+ MBs) and usually unnecessarily as most components are already on the page when it loads, and not added dynamically.

      To improve the out-of-the-box ICEfaces performance as it relates to page sizes and load times, we will change the default for mandatoryResourceConfiguration to 'none. This will result in no component resources being preloaded (only the resources for components on the page at initial load time will be loaded), resulting in an optimal resource load situation.

      This also means that any applications that are introducing ace components to the page dynamically (there are added to the page as part of a subsequent ajax page update and not during the initial page load) will now need to configure the mandatoryResourceConfiguration parameter (or preferably, the <icecore:config mandatoryResource=""> tag which can be specified per-view) in order to continue to function correctly.

        Issue Links

          Activity

          Hide
          Ken Fyten added a comment - - edited

          Since the default is no longer null, which was used originally to indicate that all resources should be pre-loaded, there is now no way to set the mandatoryResourceConfiguration to a value that will engage the fully-automated resource loading behaviour, if desired.

          We need to add support for an additional value for mandatoryResourceConfiguration, "all" or maybe "auto", which would re-instate the automatic detection and loading of component resources via class path detection.

          Show
          Ken Fyten added a comment - - edited Since the default is no longer null, which was used originally to indicate that all resources should be pre-loaded, there is now no way to set the mandatoryResourceConfiguration to a value that will engage the fully-automated resource loading behaviour, if desired. We need to add support for an additional value for mandatoryResourceConfiguration, "all" or maybe "auto", which would re-instate the automatic detection and loading of component resources via class path detection.
          Hide
          Ken Fyten added a comment -

          An additional mandatoryResourceConfiguration parameter value string is now supported - 'all'. When 'all' is specified, ICEfaces will preload all component resources in the initial page GET for all components on the class path. This provides an easy way to ensure all component resources are present when needed, at the significant expense of loading JS resource for components that may not even be used on the page.

          The 'all' behaviour matches the previous default mandatoryResource behaviour.

          Show
          Ken Fyten added a comment - An additional mandatoryResourceConfiguration parameter value string is now supported - 'all'. When 'all' is specified, ICEfaces will preload all component resources in the initial page GET for all components on the class path. This provides an easy way to ensure all component resources are present when needed, at the significant expense of loading JS resource for components that may not even be used on the page. The 'all' behaviour matches the previous default mandatoryResource behaviour.
          Hide
          Ken Fyten added a comment -

          A regression has been found using svn rvn# 25909 in that even though the default value is still reported as being "none" in the startup log for the mandatoryResource setting, it is now loading all ACE JS resources into the head during the initial page load, just as if the default as still null (or the newer "all" setting). This is incorrect, by default the "none" setting should not be loading any ACE resources for components that aren't already on the page during the GET.

          To illustrate this issue, run the auction sample and add the icefaces-ace.jar to it and you'll see all the ace resources being loaded into the browser, even though none of them are used in the application.

          Show
          Ken Fyten added a comment - A regression has been found using svn rvn# 25909 in that even though the default value is still reported as being "none" in the startup log for the mandatoryResource setting, it is now loading all ACE JS resources into the head during the initial page load, just as if the default as still null (or the newer "all" setting). This is incorrect, by default the "none" setting should not be loading any ACE resources for components that aren't already on the page during the GET. To illustrate this issue, run the auction sample and add the icefaces-ace.jar to it and you'll see all the ace resources being loaded into the browser, even though none of them are used in the application.
          Hide
          Ken Fyten added a comment -

          Mircea, looks like you forgot to change BridgeSetup.java to only use/ load the entire mandatoryResource class list from the jar if mandatoryResourceConfig != "none".

          Show
          Ken Fyten added a comment - Mircea, looks like you forgot to change BridgeSetup.java to only use/ load the entire mandatoryResource class list from the jar if mandatoryResourceConfig != "none".
          Hide
          Ted Goddard added a comment -

          Fix checked in and tested with both icecore:config and web.xml variants. Recommend additional testing in customer application.

          Show
          Ted Goddard added a comment - Fix checked in and tested with both icecore:config and web.xml variants. Recommend additional testing in customer application.

            People

            • Assignee:
              Ted Goddard
              Reporter:
              Ken Fyten
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: