アダプティブフォームのキャッシュの設定 configure-adaptive-forms-cache

キャッシュは、データへのアクセスにかかる時間を短縮し、遅延を削減して I/O 速度を改善するメカニズムです。アダプティブフォームのキャッシュは、アダプティブフォームの HTML コンテンツと JSON の構造のみを保存し、事前入力されたデータは保存しません。これにより、クライアントサイドのアダプティブフォームのレンダリングの時間を短縮します。特にアダプティブフォーム向けに設計されています。

オーサーインスタンスおよびパブリッシュインスタンスでのアダプティブフォームのキャッシュの設定 configure-adaptive-forms-caching-at-author-and-publish-instances

  1. https://[server]:[port]/system/console/configMgr の AEM Web コンソール設定マネージャーに移動します。

  2. アダプティブフォームおよびインタラクティブ通信 Web チャネルの設定」をクリックして、設定値を編集します。

  3. 設定値を編集ダイアログで、AEM Forms サーバーのインスタンスでキャッシュできるフォームまたはドキュメントの最大数を「アダプティブフォームの数」フィールドに指定します。デフォルト値は 100 です。

    note note
    NOTE
    キャッシュを無効にするには、「アダプティブフォームの数」フィールドの値を 0 に設定します。キャッシュ設定を無効にしたり変更したりすると、キャッシュがリセットされ、すべてのフォームとドキュメントがキャッシュから削除されます。

    アダプティブフォームの HTML キャッシュの設定ダイアログ

  4. 保存」をクリックして、設定を保存します。

環境は、アダプティブフォームと関連アセットのキャッシュを使用するように設定されています。

(オプション)Dispatcher でのアダプティブフォームのキャッシュの設定 configure-the-cache

パフォーマンスをさらに向上させるために、Dispatcher でアダプティブフォームのキャッシュを設定することもできます。

前提条件 pre-requisites

Dispatcher 上でアダプティブフォームをキャッシュする際の考慮事項 considerations

  • アダプティブフォームのキャッシュを使用する場合、AEM Dispatcher を使用してアダプティブフォームのクライアントライブラリ(CSS および JavaScript)をキャッシュしてください。

  • カスタムコンポーネントの開発時には、開発に使用されるサーバー上でアダプティブフォームのキャッシュを無効にしておく必要があります。

  • 拡張子のない URL はキャッシュされません。例えば、パターン /content/forms/[folder-structure]/[form-name].html の URL はキャッシュされ、パターン /content/dam/formsanddocument/[folder-name]/<form-name>/jcr:content の URL は無視されます。このように、キャッシュのメリットを活用するには、拡張子が付いた URL を使用します。

  • ローカライズされたアダプティブフォームの考慮事項:

    • http://host:port/content/forms/af/afName.html?afAcceptLang=<locale> の代わりに http://host:port/content/forms/af/<afName>.<locale>.html の URL 形式を使用して、アダプティブフォームのローカライズ版をリクエストします。
    • 形式の 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 を使用し、設定マネージャーで​ ブラウザーロケールを使用 ​が有効になっている場合、アダプティブフォームのローカライズ版が提供されます(利用可能な場合)。ローカライズされたアダプティブフォームの言語は、ブラウザーに設定されたロケール(ブラウザーロケール)に基づきます。これは、[アダプティブフォームの最初のインスタンスのみがキャッシュされる]原因になる可能性があります。インスタンスで問題が発生しないようにするには、トラブルシューティングを参照してください。

Dispatcher でのキャッシュの有効化

Dispatcher 上のアダプティブフォームのキャッシュを有効にして設定するには、以下の手順を実行します。

  1. 環境のすべてのパブリッシュインスタンスに対して次の URL を開き、ご使用の環境のパブリッシュインスタンス用のフラッシュエージェントを有効にします
    http://[server]:[port]]/etc/replication/agents.publish/flush.html

  2. dispatcher.any ファイルに以下を追加します

    code language-json
       /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 は除外されます。例えば、インタラクティブ通信などです。

    code language-json
       /0000 {
             /glob "*"
             /type "allow"
       }
       ## Do not cache csrf login tokens
       /0001 {
             /glob "/libs/granite/csrf/token.json"
             /type "deny"
       }
       ## Do not cache IC - print channel
       /0002 {
             /glob "/content/forms/**/channels/print.html"
             /type "deny"
       }
       ## Do not cache IC - web channel
       /0003 {
             /glob "/content/forms/**/channels/web.html"
             /type "deny"
       }
    
  4. 「URL パラメーターを無視」リストに以下のパラメーターを追加します

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

AEM 環境は、アダプティブフォームをキャッシュするように設定されています。すべてのタイプのアダプティブフォームをキャッシュします。キャッシュされたページを配信する前に、ページへのユーザーのアクセス権限を確認する必要がある場合は、セキュリティで保護されたコンテンツのキャッシュを参照してください。

トラブルシューティング troubleshooting

画像やビデオを含む一部のアダプティブフォームが Dispatcher のキャッシュから自動的に無効にならない videos-or-images-not-auto-invalidated

問題 issue1

アセットブラウザーで画像やビデオを選択してアダプティブフォームに追加し、これらの画像およびビデオをアセットエディターで編集する場合、このような画像を含むアダプティブフォームが、Dispatcher キャッシュから自動的に無効になりません。

解決策 Solution1

画像とビデオを公開した後、これらのアセットを参照するアダプティブフォームを明示的に非公開にしてから公開してください。

アダプティブフォームの最初のインスタンスのみがキャッシュされる only-first-instance-of-adaptive-forms-is-cached

問題 issue3

アダプティブフォーム URL にローカライゼーション情報がなく、設定マネージャーの​ ブラウザーロケールを使用 ​が有効になっている場合、ローカライズ版のアダプティブフォームが提供されます。アダプティブフォームの最初のインスタンスのみがキャッシュされ、後続のすべてのユーザーに配信されます。

解決策 Solution3

次の手順を実行して問題を解決します。

  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>
recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2