3.7 動的に生成されるテンプレート用のキャッシュ設定の指定

アプリケーションで、XFA コンテンツを自動的に更新することによって固有のテンプレートをすばやく生成する場合は、キャッシュ操作の以下の側面を考慮する必要があります。実際には、各トランザクションで新しい固有のテンプレートが使用されています。

Forms Generator または Output が、特定のフォームテンプレートのキャッシュ内のエントリを検索または更新する場合は、以下の複数のキー値を使用して、アクセスする特定のキャッシュエントリを探します。

  • テンプレートファイルの名前 :キャッシュされているフォームの固有のプライマリ識別子として使用される、テンプレートの場所およびファイル名です。

  • タイムスタンプ :テンプレートファイルには、フォームの最終更新時間の確定に使用するタイムスタンプが含まれています。

  • テンプレートの UUID :各テンプレートには、Designer により、フォームとそのバージョンに応じて固有の識別子(UUID)が挿入されます。埋め込まれた UUID は、フォームが更新されるびに更新されます。例えば、XDP テンプレートには次の内容が表示されます。

    <?xml version="1.0" encoding="UTF-8"?>

    <?xfa generator="AdobeAEM formsDesignerES_V8.2"

    APIVersion="2.6.7185.0"?><xdp:xdp xmlns:xdp=http://ns.adobe.com/xdp/

    timeStamp="2008-07-29T21:22:12Z"

    uuid="823e538f-ff6c-4961-b759-f7626978a223"><template xmlns="http://www.xfa.org/schema/xfa- template/2.6/">

  • レンダリングオプション :キャッシュの内容は、固有のレンダリングオプションのセットごとにレンダリングフォームキャッシュ内に個別に保存されます。

Forms サービスは、ファイル名またはリポジトリの場所を参照するか、メモリ内で XML オブジェクトとしての値を使用することによって、テンプレートを受け取ります。

  • 参照によって渡されるテンプレート :コンテンツルートおよびファイル名を使用します。この方法を使用して、固有のテンプレートが、要求ごとに異なるファイル名で渡されると、ディスクキャッシュは無制限に増えて再利用できなくなります。これを防ぐには、固有のテンプレートは同じファイル名を使用して渡し、すべての要求で同じキャッシュが更新されるようにします。

  • 値によって渡されるテンプレート :theinDataDoc パラメーターを使用して、データと共に渡されるテンプレートのバイトを使用します。この方法を使用して、固有のテンプレートが、異なる UUID を指定して渡されると、ディスクキャッシュは無制限に増えて再利用できなくなります。これを防ぐには、すべてのテンプレートから UUID 属性を削除し、テンプレートのキャッシュが作成されないようにします。または、Null 以外の同一の UUID を渡すと、キャッシュオブジェクトは作成されますがすべての要求で同じキャッシュが更新されるようになります。

同様に、キャッシュが無制限に増えないようにするために、新しい AEM forms API( renderHTMLForm2 および renderPDFForm2 )を使用して動的に生成されるテンプレートのレンダリングについて、以下の要因を考慮します。

新しい API を使用する場合、テンプレートはドキュメントオブジェクトとして渡され、パッシブにするかしないかに基づいて Forms サービス内で処理されます。

UUID およびコンテンツルートがキャッシュのキーとして機能するパッシブにしたドキュメントの場合は、以下の側面を考慮します。

  • UUID が含まれないパッシブにした入力テンプレートに対しては、キャッシュは作成されません。

  • UUID とコンテンツルートが同一の、パッシブにした複数の入力テンプレートが渡される場合は、同じキャッシュが上書きされます。

ファイル名およびコンテンツルートがキャッシュのキーとして機能する、パッシブにしていないドキュメントの場合は、以下の側面を考慮します。

  • パッシブにしていない入力テンプレートの場合、キャッシュは、ドキュメントの生成元となったコンテンツルートとファイル名に依存します。コンテンツルートとテンプレートのファイル名が同じ要求についてのみ、同じキャッシュが使用されます。

    動的に生成されたテンプレートが Forms サービスに渡されるとき、以下のベストプラクティスによってにキャッシュが無制限に増えないようになります。

    • UUID を削除するか、動的に生成されたすべてのテンプレートで同一の UUID を渡します。

    • テンプレートのバイト、またはディスク上の同じファイル名からドキュメントを生成します。