配置自适应表单缓存

缓存是一种缩短数据访问时间、减少延迟和提高输入/输出(I/O)速度的机制。 自适应表单缓存仅存储自适应表单的HTML内容和JSON结构,而不保存任何预填数据。 它有助于缩短在客户端上渲染自适应表单所需的时间。 它专门为自适应表单设计。

在创作和发布实例处配置自适应表单缓存

  1. 转到位于https://[server]:[port]/system/console/configMgr的AEM Web控制台配置管理器。

  2. 单击​自适应表单和交互式通信Web渠道配置​以编辑其配置值。

  3. 在编辑配置值对话框中,在​自适应Forms​字段中指定AEM Forms服务器实例可以缓存的最大表单或文档数。 默认值为 100。

    注意

    要禁用缓存,请将“Number of Adaptive Forms”(自适应)字段中的值设置为​0。 在禁用或更改缓存配置时,将重置缓存,并从缓存中删除所有表单和文档。

    自适应表单HTML缓存的配置对话框

  4. 单击​保存​以保存配置。

您的环境配置为使用缓存自适应表单和相关资产。

(可选)在调度程序处配置自适应表单缓存

您还可以在调度程序中配置自适应表单缓存以进一步提高性能。

先决条件

  • 在客户端🔗处启用合并或预填数据选项。 它有助于合并预填充表单的每个实例的唯一数据。

在调度程序上缓存自适应表单的注意事项

  • 使用自适应表单缓存时,使用AEM Dispatcher缓存自适应表单的客户端库(CSS和JavaScript)。
  • 在开发自定义组件时,在用于开发的服务器上,保持禁用自适应表单缓存。
  • 未缓存扩展名的URL。 例如,对模式为/content/forms/[folder-structure]/[form-name].html的URL进行缓存,缓存会忽略模式为/content/dam/formsanddocument/[folder-name]/<form-name>/jcr:content的URL。 因此,将URL与扩展一起使用可以从缓存中受益。
  • 本地化自适应表单的注意事项:
    • 使用URL格式http://host:port/content/forms/af/<afName>.<locale>.html请求自适应表单的本地化版本,而不是http://host:port/content/forms/af/afName.html?afAcceptLang=<locale>
    • 禁用对格式 为的URL使用浏览器 http://host:port/content/forms/af/<adaptivefName>.html位置。
    • 当您使用URL格式http://host:port/content/forms/af/<adaptivefName>.html,并且禁用配置管理器中的​使用浏览器区域设置​时,将提供自适应表单的非本地化版本。 非本地化语言是开发自适应表单时使用的语言。 不会考虑为浏览器配置的区域设置(浏览器区域设置),并提供自适应表单的非本地化版本。
    • 当您使用URL格式http://host:port/content/forms/af/<adaptivefName>.html,并在配置管理器中启用​使用浏览器区域设置​时,将提供自适应表单的本地化版本(如果可用)。 本地化的自适应表单的语言基于为浏览器配置的区域设置(浏览器区域设置)。 它可能只导致[缓存自适应表单的第一个实例]。 要防止在实例上发生问题,请参阅疑难解答

在调度程序处启用缓存

执行以下列出的步骤,在调度程序上启用和配置缓存自适应表单:

  1. 为环境的每个发布实例打开以下URL,并为环境的发布实例启用刷新代理:
    http://[server]:[port]]/etc/replication/agents.publish/flush.html

  2. 将以下内容添加到dispatcher.any文件:

       /invalidate
       {
       /0000
       {
       /glob "*"
       /type "deny"
       }
       /0001
       {
       # Consider all HTML files stale after an activation.
       /glob "*.html"
       /type "allow"
       }
       /0002
       {
       # Exclude htmls present in AF directories
       /glob "/content/forms/**/*.html"
       /type "deny"
       }
    

    添加上述内容时:

    • 自适应表单将一直保留在缓存中,直到未发布表单的更新版本。

    • 发布自适应表单中引用的资源的较新版本时,受影响的自适应表单会自动失效。 引用资源的自动失效有一些例外。 有关异常的补救方法,请参阅疑难解答部分。

  3. 添加以下规则dispatcher.any或自定义规则文件。它不包括不支持缓存的URL。 例如,交互通信。

       /0000 {
             /glob "*"
             /type "allow"
       }
       ## Don't cache csrf login tokens
       /0001 {
             /glob "/libs/granite/csrf/token.json"
             /type "deny"
       }
       ## Don't cache IC - print channel
       /0002 {
             /glob "/content/forms/**/channels/print.html"
             /type "deny"
       }
       ## Don't cache IC - web channel
       /0003 {
             /glob "/content/forms/**/channels/web.html"
             /type "deny"
       }
    
  4. 将以下参数添加到忽略URL参数列表:

       /ignoreUrlParams {
       /0001 { /glob "*" /type "deny" }
       # added for AEM forms specific use cases.
       /0003 { /glob "dataRef" /type "allow" }
       }
    

您的AEM环境配置为缓存自适应表单。 它缓存所有类型的自适应表单。 如果在传送缓存页面之前需要检查页面的用户访问权限,请参阅缓存安全内容

疑难解答

某些包含图像或视频的自适应表单不会自动从调度程序缓存中失效

带有 OS 剪贴板

当您通过资产浏览器选择图像或视频并将它们添加到自适应表单,并且这些图像和视频在资产编辑器中进行编辑时,包含这些图像的自适应表单不会自动从调度程序缓存中失效。

解决方案

发布图像和视频后,请显式取消发布和发布引用这些资产的自适应表单。

只缓存自适应表单的第一个实例

带有 OS 剪贴板

当自适应表单URL没有任何本地化信息,并且启用配置管理器中的​使用浏览器区域设置​时,将提供自适应表单的本地化版本,并且只缓存自适应表单的第一个实例并发送给每个后续用户。

解决方案

请执行以下步骤以解决问题:

  1. 打开conf.d/httpd-dispatcher.conf或配置为在运行时加载的任何其他配置文件。

  2. 将以下代码添加到文件并保存它。 它是一个修改它以适合您的环境的示例代码。

   <VirtualHost *:80>
        # Set log level high during development / debugging and then turn it down to whatever is appropriate
    LogLevel rewrite:trace6
        # Start Rewrite Engine
    RewriteEngine On
        # Handle actual URL convention (just pass through)
        RewriteRule "^/content/forms/af/(.*)[.](.*).html$" "/content/forms/af/$1.$2.html" [PT]
 
        # Handle selector based redirection basded on browser language
        # The Rewrite Cond(ition) is looking for the Accept-Lanague header and if found takes the first two character which most likely will be the desired language selector.
        RewriteCond %{HTTP:Accept-Language} ^(..).*$ [NC]
        RewriteRule "^/content/forms/af/(.*).html$" "/content/forms/af/$1.%1.html" [R]
   </VirtualHost>

On this page

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now