51黑料不打烊

Set up Sling Dynamic Include

A video walk-through of installing and using Apache Sling Dynamic Include with AEM Dispatcher running on Apache HTTP Web Server.

video poster

NOTE
Ensure the latest version of AEM Dispatcher is installed locally.
  1. Download and install the .

  2. Configure Sling Dynamic Include via the OSGi Configuration Factory at http://<host>:<port>/system/console/configMgr/org.apache.sling.dynamicinclude.Configuration.

    Or, to add to an AEM code-base, create the appropriate sling:OsgiConfig node at:

    code language-xml
    <?xml version="1.0" encoding="UTF-8"?>
    <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0"
        xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
        jcr:primaryType="sling:OsgiConfig"
        include-filter.config.enabled="{Boolean}true"
        include-filter.config.path="/content"
        include-filter.config.resource-types="[my-app/components/content/highly-dynamic]"
        include-filter.config.include-type="SSI"
        include-filter.config.add_comment="{Boolean}false"
        include-filter.config.selector="nocache"
        include-filter.config.ttl=""
        include-filter.config.required_header="Server-Agent=Communique-Dispatcher"
        include-filter.config.ignoreUrlParams="[]"
        include-filter.config.rewrite="{Boolean}true"
        />
    <!--
    * include-filter.config.include-type="SSI | ESI | JSI"
    * include-filter.config.ttl is # of seconds (requires AEM Dispatcher 4.1.11+)
    -->
    
  3. (Optional) Repeat the last step to allow for components on to be served via SDI as well. The reason for the additional configuration is that locked content of editable templates is served from /conf instead of /content.

    code language-xml
    <?xml version="1.0" encoding="UTF-8"?>
    <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0"
        xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
        jcr:primaryType="sling:OsgiConfig"
        include-filter.config.enabled="{Boolean}true"
        include-filter.config.path="/conf"
        include-filter.config.resource-types="[my-app/components/content/highly-dynamic]"
        include-filter.config.include-type="SSI"
        include-filter.config.add_comment="{Boolean}false"
        include-filter.config.selector="nocache"
        include-filter.config.ttl=""
        include-filter.config.required_header="Server-Agent=Communique-Dispatcher"
        include-filter.config.ignoreUrlParams="[]"
        include-filter.config.rewrite="{Boolean}true"
        />
    <!--
    * include-filter.config.include-type="SSI | ESI | JSI"
    * include-filter.config.ttl is # of seconds (requires AEM Dispatcher 4.1.11+)
    -->
    
  4. Update Apache HTTPD Web server鈥檚 httpd.conf file to enable the Include module.

    code language-shell
    $ sudo vi .../httpd.conf
    
    code language-shell
    LoadModule include_module libexec/apache2/mod_include.so
    
  5. Update the vhost file to respect include directives.

    code language-shell
    $ sudo vi .../vhosts/aem-publish.local.conf
    
    code language-shell
    <VirtualHost *:80>
    ...
       <Directory /Library/WebServer/docroot/publish>
          ...
          # Add Includes to enable SSI Includes used by Sling Dynamic Include
          Options FollowSymLinks Includes
    
          # Required to have dispatcher-handler process includes
          ModMimeUsePathInfo On
    
          # Set includes to process .html files
          AddOutputFilter INCLUDES .html
          ...
       </Directory>
    ...
    </VirtualHost>
    
  6. Update the dispatcher.any configuration file to support (1) nocache selectors and (2) enable TTL support.

    code language-shell
    $ sudo vi .../conf/dispatcher.any
    
    code language-shell
    /rules {
      ...
      /0009 {
        /glob "*.nocache.html*"
        /type "deny"
      }
    }
    
    note tip
    TIP
    Leaving the trailing * off in the glob *.nocache.html* rule above, can result in .
    code language-shell
    /cache {
        ...
        /enableTTL "1"
    }
    
  7. Always restart Apache HTTP Web Server after making changes to its configuration files or the dispatcher.any.

    code language-shell
    $ sudo apachectl restart
    
NOTE
If you are using Sling Dynamic Includes for serving edge-side includes (ESI), then make sure to cache relevant response headers in the dispatcher cache. Possible headers include the following:
  • 鈥淐补肠丑别-颁辞苍迟谤辞濒鈥
  • 鈥淐辞苍迟别苍迟-顿颈蝉辫辞蝉颈迟颈辞苍鈥
  • 鈥淐辞苍迟别苍迟-罢测辫别鈥
  • 鈥淓虫辫颈谤别蝉鈥
  • 鈥淟补蝉迟-惭辞诲颈蹿颈别诲鈥
  • 鈥淓罢补驳鈥
  • 鈥淴-颁辞苍迟别苍迟-罢测辫别-翱辫迟颈辞苍蝉鈥
  • 鈥淟补蝉迟-惭辞诲颈蹿颈别诲鈥

Supporting materials

recommendation-more-help
c92bdb17-1e49-4e76-bcdd-89e4f85f45e6