3.7 Configuration des paramètres du cache pour les modèles générés dynamiquement

Les aspects suivants du fonctionnement du cache doivent être pris en compte si votre application génère des modèles uniques à la volée en mettant automatiquement à jour le contenu XFA. En effet, chaque transaction utilise un modèle nouveau et unique.

Lorsque le générateur ou la sortie des formulaires recherche ou met à jour les entrées du cache pour un modèle de formulaire spécifique, il utilise plusieurs valeurs clés pour localiser l’entrée de cache spécifique à laquelle il sera fait accès.

  • Nom de fichier modèle : Emplacement et nom du modèle utilisé comme identifiant unique principal du formulaire mis en cache.

  • Horodatage : Le fichier modèle contient un horodatage utilisé pour déterminer l’heure de la dernière mise à jour du formulaire.

  • UUID modèle : Designer insère dans chaque modèle un identifiant unique (UUID) pour le formulaire et sa version. Chaque fois que le formulaire est mis à jour, l’identifiant UUID incorporé est mis à jour. Par exemple, un modèle XDP peut afficher le contenu suivant :

    <?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/">

  • Options de rendu : Dans le cache de formulaire rendu, les contenus de cache sont stockés séparément pour chaque ensemble d’options de rendu uniques.

Le service Forms reçoit des modèles par référence au nom de fichier ou à l’emplacement de référentiel ou par valeur en tant qu’objet XML en mémoire.

  • Modèles transmis par référence : Utilise la racine de contenu et le nom de formulaire. Si des modèles uniques avec différents noms de fichier sont transmis dans chaque requête à l’aide de cette méthode, le cache de disque grandit sans fin et n’est jamais réutilisé. Pour éviter cela, les modèles uniques doivent être transmis avec le même nom de fichier pour garantir que le même cache est mis à jour pour toutes les requêtes.

  • Modèles transmis par valeur : Utilise les octets de modèle transmis avec les données à l’aide du paramètre theinDataDoc. Si des modèles uniques avec un identifiant UUID différent sont transmis à l’aide de cette méthode, le cache de disque grandit sans fin et n’est jamais réutilisé. Pour éviter ceci, l’attribut UUID doit être supprimé de tous les modèles afin de garantir qu’aucun cache n’est créé pour le modèle. Sinon, transmettre le même identifiant UUID non nul permet de créer les objets de cache, mais garantit que le même cache est mis à jour à chaque demande.

De même, pour empêcher le cache de grandir sans fin, tenez compte des facteurs suivants afin de rendre les modèles générés de manière dynamique à l’aide des nouvelles API AEM forms, qui sont renderHTMLForm2 et renderPDFForm2 .

Lorsque vous utilisez les nouvelles API, le modèle est transmis en tant qu’objet document, qui est géré par le service Forms selon qu’il est passivé on non :

Pour les documents passivés dans lesquels l’identifiant UUID et la racine de contenu font office de clé de cache, tenez compte des points suivants :

  • Le cache n’est pas créé pour les modèles d’entrée passivés sans identifiant UUID.

  • Si plusieurs modèles d’entrée passivés portant le même identifiant UUID et la même racine de contenu sont transmis, le même cache est remplacé.

Pour les documents non passivés dans lesquels le nom de fichier et la racine de contenu font office de clé de cache, considérez l’aspect suivant :

  • Pour les modèles d’entrée non passivés, la mise en cache dépend de la racine de contenu et du nom de fichier à partir desquels le document a été généré. Le même cache sera utilisé uniquement pour les requêtes présentant la même racine de contenu et le même nom de fichier de modèle.

    Les meilleures pratiques suivantes garantissent que le cache ne grandit pas sans fin lorsque des modèles générés de manière dynamique sont transmis au service Forms :

    • Éliminez l’identifiant UUID ou transmettez le même identifiant UUID dans tous les modèles générés dynamiquement.

    • Générez le document à partir des octets de modèle ou du même nom de fichier sur disque.