CADENAS_DATA Caching (mise en cache RFS) [CADENAS_DATA Caching (RFS-Caching)]
Par défaut, $CADENAS_DATA n'est pas mis en cache, mais il faut vérifier à chaque demande d'un client si les données ont été modifiées (must-revalidate).
Cela est nécessaire pour pouvoir toujours afficher des données actuelles. Elle peut toutefois entraîner une augmentation des temps de démarrage via des connexions lentes.
L'option Autoriser la mise en [Allow caching] cache vous permet de passer à la mise en cache. Indiquez ensuite encore le nombre minimum de secondes. Dans ce cas, aucune nouvelle requête ne sera envoyée au serveur pour les données déjà mises en cache avant l'expiration du temps de mise en cache défini ici. Cela a toutefois l'inconvénient que les clients ne sont pas informés des modifications qui se produisent sur le serveur pendant ce temps (catalogues importés/actualisés). Le réglage ici ne concerne que les données de catalogue, pas le contenu de la base de données ERP, qui est toujours chargé à jour, même si la mise en cache est autorisée.
Il peut également être utile d'exclure certains clients (psworker, etc. ou l'AppServer lui-même) de cette mise en cache. Pour ce faire, utilisez les deux options suivantes :
Pas de mise en cache pour les adresses IP/plage suivantes [No caching for the following IP addresses/ranges]: Saisissez ici l'adresse IP ; plusieurs doivent être saisies séparées par des virgules.
Pas de mise en cache pour les agents utilisateurs suivants [No caching for the following user agents]: saisissez ici l'adresse IP ; plusieurs doivent être saisies séparées par des virgules.
Autres paramètres de cache [Further cache settings]:
Toutefois, si un proxy http est intercalé, les délais d'attente doivent être réduits pour les répertoires suivants, sinon le processus d'invalidation du cache CADENAS ne fonctionnera pas. (Les valeurs devraient être de l'ordre de l'heure).
Dans la version <=11, une méthode permettant de placer un proxy en amont de l'AppServer via Squid a été décrite. Cette méthode fonctionne toujours en théorie, mais ne devrait plus être utilisée en raison de nouvelles techniques.
Pour mettre en place un AppServer central avec des serveurs locaux dans chaque succursale qui mettent en cache autant que possible pour réduire le trafic de données, procédez comme suit :
Utiliser un serveur web nginx Linux standard configuré comme proxy inverse.
Configurez "proxy_cache" pour mettre en cache toutes les données pouvant être mises en cache dans votre répertoire de cache local.
Utilisez un certificat SSL séparé pour ce reverse proxy afin de proposer des connexions cryptées au client.
Dirigez toutes les demandes vers l'amont (AppServer central) via http ou https.
Configurez les IP de ce serveur comme proxies autorisés dans l'AppServer lui-même.
server {
# uncomment this and provide ssl certs for nginx for the hostname you want to use
#listen 9022 ssl;
#ssl_certificate /etc/letsencrypt/live/x.com/fullchain.pem;
#ssl_certificate_key /etc/letsencrypt/live/x.com/privkey.pem;
#ssl_protocols TLSv1.2 TLSv1.3;
#ssl_ciphers HIGH:!aNULL:!MD5;
# http port
listen 9020;
# server name (use the one you intend to use)
server_name proxy.example.com;
location / {
# use the ssl variant if you go over unsecure connections
# proxy_pass https://appserver.example.com:9022;
proxy_pass http://appserver.example.com:9020;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# HTTP caching
proxy_cache my_cache;
add_header X-Proxy-Cache $upstream_cache_status;
}
}
# Cache settings
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g
inactive=60m use_temp_path=off;
Si cela est correctement mis en place, il suffit d'utiliser une variable CADENAS_APPSERVER différente dans les succursales :
CADENAS_APPSERVER=https://proxy.example.com:9022?ws=1&flm=1
CADENAS_APPSERVER=https://appserver.example.com:9022?ws=1&flm=1
Un tel proxy de mise en cache a l'avantage d'économiser le trafic de données, car il ne transmet les données qu'une seule fois du serveur central aux proxies et de là aux clients.
Le setup standard de CADENAS n'est pas configuré pour utiliser de tels proxies entre les deux. S'ils sont utilisés, la mise en cache pour $CADENAS_SITESETUP doit être limitée au minimum, car le cache ne peut pas être invalidé par "push" de l'AppServer (comme cela se produit avec les clients). Pour que cela fonctionne, il faut revenir à des temps d'expiration plus faibles.
Pour cela, un
section spéciale dans le pappserver.cfg à
Réduire les temps de mise en cache pour RFS :
pappserver.cfg: [FileSystemModuleMaxAges] CADENAS_DATA=3600 CADENAS_DATA/datasetup=3600 CADENAS_SETUP=3600 CADENAS_SITESETUP=3600
Cela réduit le délai d'expiration à une heure. Les modifications ne seront pas visibles sur les clients avant l'expiration d'une heure. Si cela est trop long, réduisez le nombre de secondes jusqu'à ce que cela convienne à vos besoins.
Si vous fixez la valeur à 0, la mise en cache est effectivement désactivée et les clients sont contraints d'effectuer un "cycle si modifié". Vous pouvez faire cela pendant la configuration et augmenter à nouveau le temps d'expiration plus tard en production.
Ce qui est décrit fonctionne également pour les clients ENTERPRISE 3Dfindit.
Dans le navigateur, utilisez simplement le nom d'hôte du proxy au lieu du nom de l'AppServer directement pour accéder au site principal via ce proxy.
"https://proxy.example.com:9022/webapps/3dfindit-enterprise"
En ce qui concerne la SSO, il convient de noter ce qui suit :
Avec OpenID, il suffit d'ajouter le "proxy.example.com" au "referer_uris" dans la configuration de l'application dans Azure ou chez votre fournisseur OpenID. Cela doit être fait parce qu'un autre nom d'hôte public est introduit, pour lequel les redirections sont autorisées.
Pour Kerberos, un "setspn -S HTTP/proxy.example.com <serviceuser>" doit être défini pour que cela fonctionne.
De plus, l'IP de "proxy.example.com" doit être ajoutée comme proxy inverse autorisé à la page "cloud-support" du serveur d'application principal.
ET il faut également ajouter le nom d'hôte supplémentaire à la liste "Origin" autorisée dans la page de support Cloud (car les deux noms d'hôtes sont désormais autorisés à exécuter des requêtes CORS).


![Origines CORS supplémentaires [Additional CORS origins]](https://webapi.partcommunity.com/service/help/latest/pages/fr/3dfindit/doc/resources/img/img_132eb196f3e3406f8e74027244e080cc.png)