Mise en cache - Généralités
Une grande partie des données du système ne change pas. Afin de ne pas avoir à accéder à la base de données à chaque fois que de telles données sont requises par un utilisateur final ou un traitement batch, le système garde les informations statiques en mémoire cache sur le serveur Web et dans le processus du pool de threads batch. C'est ce que l'on appelle les "caches d'application". Exemples de caches d'application :
-
Messages système
-
Etiquettes de champ et autres informations sur les champs
-
Informations de sécurité
Le produit Framework offre de nombreux caches spécifiques pour les données d'usage fréquent qui ne sont pas souvent modifiées. En outre, des applications intégrables particulières peuvent apporter des caches supplémentaires si nécessaire.
Des informations peuvent également être mises en mémoire cache dans le navigateur de chaque utilisateur.
Les rubriques ci-dessous donnent des informations sur l'actualisation des différents caches.
Mémoire cache serveur
La mémoire cache serveur est celle où les données sont mises en cache sur le serveur Web. Elle a un usage important dans le cadre de l'accès en ligne des utilisateurs à l'application. Elle permet d'améliorer les performances lors de la navigation dans le système, car l'accès aux données peut se faire dans les caches et non systématiquement dans la base de données. La mémoire cache du serveur Web sert non seulement aux utilisateurs, mais aussi à d'autres fonctionnalités déployées sur ce serveur, qui l'utilisent d'une façon similaire. C'est par exemple le cas des services Web qui sont déployés sur le serveur Web et accèdent à leur propre version de la mémoire cache.
Le contenu de la mémoire cache est effacé à chaque fois que le serveur Web est redémarré. Des nouvelles valeurs sont donc extraites de la base de données lorsque les utilisateurs et les services Web recommencent à utiliser l'application.
Le produit comporte également une commande de vidage utilisable dans l'URL du navigateur, qui permet d'effacer immédiatement le contenu de la mémoire cache. La commande flushAll.jsp permet de vider tous les caches.
Prenons l'exemple suivant :
- le serveur Web et le port sur lesquels vous travaillez sont nommés OU-Production:7500.
- vous ajoutez un nouvel enregistrement à une table de contrôle et vous souhaitez qu'il soit disponible pour les transactions appropriées immédiatement.
Pour cela, vous devez émettre la commande suivante dans la barre d'adresse de votre navigateur : http://OU-Production:7500/flushAll.jsp. Notez que la commande remplace cis.jsp qui apparaît habituellement après le numéro de port.
Si le système a été configuré correctement, la commande flushAll envoie une demande de vidage "global" des caches (y compris du cache des services Web et du cache des processus du pool de threads). Cette fonctionnalité fait appel à une rubrique JMS pour publier la demande de vidage. Pour des détails sur la configuration de la rubrique JMS, voir le Guide d'administration du serveur.
Notez également que le système fournit un service fonctionnel, F1-FlushAllService, qui équivaut à la commande flushAll (sauf qu'il ne redémarre pas votre session de navigateur). Ce service peut être utile pour tous les processus créés pour orchestrer les mises à jour des données de configuration pour lesquelles vous souhaitez vous assurer que le cache est immédiatement vidé. Ce service fonctionnel est également exposé en tant que service Web REST.
Mémoire cache batch
Lorsqu'un traitement batch est soumis, le composant de batch utilise un cache de données Hibernate pour mettre en mémoire cache les données qui ne changent pas très souvent. Les tables dont les enregistrements sont inclus dans ce cache sont configurées par l'intermédiaire de la valeur de régime de mise en cache Mis en cache pour le batch. On parle alors souvent de "cache L2". Pour plus d'informations, voir Tables. Lors du démarrage d'un processus de pool de threads, les données des tables marquées mises en cache sont chargées et mises en cache tant que le pool de threads est en cours d'exécution.
En outre, les traitements batch peuvent également accéder aux caches d'application le cas échéant. Lors du démarrage d'un processus de pool de threads, les données d'application mises en cache sont chargées et mises en cache tant que le pool de threads est en cours d'exécution.
Si des traitements batch mettent à jour des tables marquées comme Mises en cache pour le batch, vous devez exécuter ce traitement batch à l'aide d'un pool de threads spécial configuré avec la mise en cache désactivée. Contactez l'administrateur système pour confirmer que le pool de threads est bien configuré de cette manière.
Si une modification des données en mémoire cache doit être disponible pour le traitement batch suivant, les points ci-dessous indiquent comment le cache peut être actualisé :
-
Par défaut, le système est configuré pour actualiser automatiquement le cache Hibernate toutes les 60 secondes. Cependant, il est possible, dans une implémentation, de remplacer cette configuration et de modifier le nombre de secondes entre deux actualisations ou tout bonnement de désactiver la mise en cache automatique. Les caches d'application utilisés par les traitements batch ne sont pas touchés par cette actualisation.
-
Redémarrez les processus de pool de threads.
-
Exécutez le processus en arrière-plan F1–FLUSH (Vider tous les caches). Celui-ci vide les données d'application de la mémoire cache pour tous les processus de tous les pools de threads.
-
Si votre région a configuré les processus de pool de threads pour qu'ils "écoutent" les demandes de vidage global, comme indiqué dans la section Mémoire cache serveur, les caches de processus de pool de threads sont également actualisés lorsqu'une commande flushAll est émise.
Mémoire cache client
Outre la mémoire cache du serveur Web, les informations sont également mise en mémoire cache dans les navigateurs des utilisateurs. Après avoir vidé les caches du serveur Web, vous devez également vider les caches de votre navigateur client. Pour ce faire, procédez comme suit (notez que selon le navigateur que vous utilisez, les étapes peuvent varier légèrement) :
- Sélectionnez Outils dans la barre de menus de votre navigateur.
- Sélectionnez Options Internet dans le menu qui s'affiche.
- Cliquez sur le bouton Supprimer les fichiers dans la fenêtre contextuelle qui s'affiche.
- Cochez la case Supprimer tout le contenu hors connexion dans la fenêtre contextuelle suivante, puis cliquez sur OK.
- Entrez ensuite l'URL standard pour accéder à nouveau au système.
