CADENAS_DATA Caching (RFS-Caching)
In der Voreinstellung wird $CADENAS_DATA nicht gecached, sondern es muss bei jeder Anfrage eines Clients überprüft werden, ob sich die Daten geändert haben (must-revalidate).
Dies ist nötig, um immer aktuelle Daten anzeigen zu können. Es kann jedoch zu erhöhten Startzeiten über langsame Verbindungen führen.
Mit der Option Caching erlauben [Allow caching] können Sie auf Caching umstellen. Geben Sie dann noch die Mindestanzahl von Sekunden ein. Dann wird vor Ablauf der hier eingestellten Cache-Zeit keine neue Anfrage an den Server für bereits gecachte Daten mehr durchgeführt. Dies hat jedoch den Nachteil, dass die Clients Änderungen, die während dieser Zeit auf dem Server passieren (Kataloge eingespielt/aktualisiert) nicht mitbekommen. Die Einstellung hier betrifft nur Katalogdaten, keine ERP-Datenbank-Inhalte. Letztere werden immer aktuell geladen, auch wenn Caching erlaubt ist.
Es kann zudem sinnvoll sein, bestimmte Clients (etwa psworker etc. oder den AppServer selber) von diesem Caching auszunehmen. Verwenden Sie hierzu die beiden folgenden Optionen:
Kein Caching für folgende IP-Addressen/Bereiche [No caching for the following IP addresses/ranges]: Tragen Sie hier die IP-Adresse ein; mehrere sind kommasepariert einzutragen.
Kein Caching für folgende User-Agents [No caching for the following user agents]: Tragen Sie hier die IP-Adresse ein; mehrere sind kommasepariert einzutragen.
Weitere Cache Einstellungen [Further cache settings]:
Wenn allerdings ein http-Proxy zwischengeschaltet ist, dann müssen für folgende Verzeichnisse die Timeouts runtergesetzt werden, weil ansonsten der CADENAS Cache-Invalidierungsprozess nicht funktionieren wird. (Die Werte sollten ca. im Stundenbereich liegen.)
In Version <=11 wurde eine Methode beschrieben, wie man dem AppServer einen Proxy vorschalten kann via Squid. Diese Methode funktioniert zwar theoretisch immer noch, sollte aber aufgrund neuer Techniken nicht mehr verwendet werden.
Um einen zentralen AppServer mit lokalen Servern in jeder Zweigstelle aufzusetzen, die zur Reduktion des Datenverkehrs soviel wie möglich cachen, gehen Sie folgendermaßen vor:
Verwenden Sie einen Standard Linux nginx Webserver, der als Reverse-Proxy konfiguriert ist.
Konfigurieren Sie "proxy_cache", um alle cachebaren Daten in ihrem lokalen Cache-Verzeichnis zu cachen.
Verwenden Sie ein separates SSL-Zertifikat für diesen Reverse-Proxy, um verschlüsselte Verbindungen zum Client zu bieten.
Leiten Sie alle Anfragen per http oder https zum Upstream (zentraler AppServer).
Konfigurieren Sie die IPs dieses Servers als erlaubte Proxies im AppServer selbst.
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;
Wenn dies korrekt aufgesetzt ist, müssen Sie nur eine unterschiedliche CADENAS_APPSERVER Variable in den Zweigstellen verwenden:
CADENAS_APPSERVER=https://proxy.example.com:9022?ws=1&flm=1
CADENAS_APPSERVER=https://appserver.example.com:9022?ws=1&flm=1
So ein Caching-Proxy hat den Vorteil Datenverkehr einzusparen, da er Daten nur einmal vom zentralen Server zu den Proxies und von dort zu den Clients überträgt.
Das CADENAS Standard Setup ist nicht dazu konfiguriert, um solche Proxies dazwischen zu verwenden. Wenn Sie verwendet werden, muss das Caching für $CADENAS_SITESETUP auf ein Minimum eingeschränkt werden, da der Cache nicht per "Push" vom AppServer invalidiert werden kann (wie es bei den Clients geschieht). Damit dies funktioniert, muss auf geringere Verfallszeiten zurückgegangen werden.
Dafür muss ein
spezieller Abschnitt in der pappserver.cfg zugefügt werden, um die
Caching-Zeiten für RFS zu reduzieren:
pappserver.cfg: [FileSystemModuleMaxAges] CADENAS_DATA=3600 CADENAS_DATA/datasetup=3600 CADENAS_SETUP=3600 CADENAS_SITESETUP=3600
Das reduziert die Verfallszeit auf eine Stunde. Änderungen werden auf den Clients nicht vor Ablauf einer Stunde sichtbar. Wenn dies zu lang ist, reduzieren Sie die Sekundenanzahl bis es für Ihre Anforderung in Ordnung ist.
Wenn Sie den Wert auf 0 setzen, wird Caching effektiv ausgeschaltet and die Clients gezwungen, einen "If-Modified-Since-Cycle" zu machen. Sie können dies während des Setup machen und später in Produktion die Verfallszeit wieder erhöhen.
Das Beschriebene funktioniert auch für ENTERPRISE 3Dfindit Clients.
Verwenden Sie im Browser einfach den Hostnamen des Proxy anstatt des Names des AppServers direkt, um auf den Hauptstandort mittels dieses Proxy zuzugreifen.
"https://proxy.example.com:9022/webapps/3dfindit-enterprise"
In Bezug auf SSO ist Folgendes zu beachten:
Bei OpenID muss nur die "proxy.example.com" der "referer_uris" in der Anwendungs-Konfig in Azure bzw. bei Ihrem OpenID-Provider zugefügt werden. Das muss deswegen geschehen, weil ein anderer öffentlicher Hostname eingeführt wird, für den die Umleitungen erlaubt sind.
Bei Kerberos muss ein "setspn -S HTTP/proxy.example.com <serviceuser>" gesetzt werden, damit es funktioniert.
Außerdem muss die IP von "proxy.example.com" als erlaubter Reverse-Proxy zur "cloud-support" Seite des Haupt-AppServers zugefügt werden.
UND es muss auch der zusätzliche Hostname der erlaubten "Origin"-Liste in der Cloud-Support Seite zugefügt werden (weil nun beiden Hostnamen erlaubt ist, CORS-Anfragen auszuführen).


![Zusätzliche CORS-Origins [Additional CORS origins]](https://webapi.partcommunity.com/service/help/latest/pages/de/3dfindit/doc/resources/img/img_bdbd5da4502140f99f1e77a8c50cc381.png)