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

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

オーサーインスタンスとパブリッシュインスタンスでアダプティブフォームのキャッシュを設定する

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

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

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

    メモ

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

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

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

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

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

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

前提条件

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

  • アダプティブフォームのキャッシュを使用する場合は、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の使用を無効にします。
    • Configuration ManagerでURL形式http://host:port/content/forms/af/<adaptivefName>.htmlを使用し、ブラウザーのロケール​を使用を無効にすると、ローカライズされていないバージョンのアダプティブフォームが提供されます。 ローカライズされていない言語は、アダプティブフォームの開発時に使用される言語です。 使用しているブラウザー(ブラウザーのロケール)に設定されたロケールは考慮されず、アダプティブフォームのローカライズされていないバージョンが提供されます。
    • URL形式http://host:port/content/forms/af/<adaptivefName>.htmlを使用し、Configuration Managerで「ブラウザーのロケール​を使用」が有効になっている場合は、ローカライズ版のアダプティブフォームが提供されます(使用可能な場合)。 ローカライズされたアダプティブフォームの言語は、お使いのブラウザーに設定されているロケール(ブラウザーのロケール)に基づきます。 [アダプティブフォームの最初のインスタンスのみをキャッシュする可能性があります。] インスタンスで問題が発生しないようにするには、トラブルシューティングを参照してください。

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

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

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

トラブルシューティング

画像やビデオを含むアダプティブフォームの一部が、Dispatcherのキャッシュから自動的に無効化されない

OS クリップボードと内部 AEM クリップボードを使用した

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

解決策

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

アダプティブフォームの最初のインスタンスのみがキャッシュされます

OS クリップボードと内部 AEM クリップボードを使用した

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

解決策

問題を解決するには、以下の手順を実行します。

  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>

このページ