配置自适应表单缓存

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

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

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

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

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

    注意

    要禁用缓存,请将“Number of Adaptive Began”(自适应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. 将以下内容添加到调度程序。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>

在此页面上

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free