ThingWorx Modelldefinition in Composer > Sicherheit > Cache-Control-Header anpassen
Cache-Control-Header anpassen
Die hier beschriebenen Elemente sollten nur konfiguriert werden, wenn Ihr Unternehmen einen Zwischenspeicher für Nachrichten benötigt oder wenn Sie wissen, dass Sie dieselbe Antwort häufig an verbundene Clients senden werden.
Übersicht
Cache-Control ist ein Mechanismus zur Steigerung der Leistung und des Reaktionsvermögens beim Bereitstellen von HTTP-Ressourcen durch Folgendes:
Jede Ressource kann ihre eigene Zwischenspeicherrichtlinie über den Cache-Control-Header definieren.
Der Cache-Control-Header definiert, wer die Antwort unter welchen Bedingungen und für wie lange zwischenspeichern kann.
Abhängig vom Ressourcentyp gibt es eine optimale Cache-Control-Richtlinie, die verwendet werden sollte. Beispielsweise sind öffentliche Bilder gut für die Zwischenspeicherung geeignet, während Seiten mit vertraulichen Benutzerdaten nicht geeignet sind.
Versuchen Sie idealerweise, so viele Antworten wie möglich für einen möglichst langen Zeitraum auf dem Client zwischenzuspeichern und einen effizienten Mechanismus für die erneute Validierung zu implementieren. Ermitteln Sie mithilfe des Diagramms im Abschnitt "Optimale Cache-Control-Richtlinien festlegen" auf dieser Webseite die optimale Cache-Control-Richtlinie für die Ressource.
Auf dieser Webseite finden Sie eine vollständige Liste der Cache-Control-Anweisungen.
Cache-Control-Header verarbeiten
Der Cache-Control-Header kann auf folgende Weise verarbeitet werden:
In der Anwendung, indem der Header dem Antwortobjekt hinzugefügt wird, z.B. durch Aufrufen der API HttpServletResponse#setHeader(String name, String value), wenn Sie Java- und Servlet-APIs verwenden.
Mit einem Web-Server wie Apache (siehe mod_expires).
Mit Lastenausgleichsmodulen, Proxies und ähnlichem (z.B. HAProxy und Nginx).
Mit Meta-Tags in HTTP-Seiten.
Normalerweise gibt es zwei Möglichkeiten, eine Kopfzeile festzulegen:
Überschreiben des Werts, wenn der Header bereits festgelegt ist
Hinzufügen eines Werts zu den vorhandenen Werten, wenn der Header bereits festgelegt ist
Cache-Control-Header in ThingWorx anpassen
Eine Änderung der Cache-Control-Optionen kann die Leistung des betroffenen ThingWorx Servers beeinträchtigen. Wenn Nachrichten für einen kürzeren Zeitraum oder gar nicht zwischengespeichert werden, kann die Verarbeitung eingehender Nachrichten länger dauern. Wenn mehr Nachrichten für einen längeren Zeitraum zwischengespeichert werden, kann während der Operation mehr Arbeitsspeicher belegt werden.
Um die Cache-Control-Einstellungen in ThingWorx anzupassen, muss die Apache Tomcat-Datei web.xml geändert werden:
1. Fügen Sie die Parameter X-Content-Type-Options und X-XSS-Protection in der Datei web.xml hinzu, um die Sicherheit zu erhöhen:
<filter>
<description>Sets various HTTP Response Headers in order to increase security, etc.</description>
<filter-name>HttpResponseHeadersFilter</filter-name>
<filter-class>com.thingworx.security.filter.HttpResponseHeadersFilter</filter-class>
<init-param>
<param-name>X-Content-Type-Options</param-name>
<param-value>SET nosniff</param-value>
</init-param>
<init-param>
<param-name>X-XSS-Protection</param-name>
<param-value>SET mode=block</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>HttpResponseHeadersFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2. Fügen Sie die gewünschten Cache-Control-Header hinzu. Zum Beispiel:
<init-param>
<param-name>Cache-Control</param-name>
<param-value>SET max-age=86400, public</param-value>
</init-param>
3. Wenn eine genauere Konfiguration erforderlich ist, können mehrere Instanzen des Filters mit verschiedenen Zuordnungen hinzugefügt werden. Zum Beispiel:

<filter>
<description>Public resources cache</description>
<filter-name>PublicResourcesCache</filter-name>
<filter-class>com.thingworx.security.filter.HttpResponseHeadersFilter</filter-class>
<init-param>
<param-name>Cache-Control</param-name>
<param-value>SET max-age=86400, public</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>PublicResourcesCache</filter-name>
<url-pattern>/public/*</url-pattern>
</filter-mapping>

<filter>
<description>Private resources cache</description>
<filter-name>PrivateResourcesCache</filter-name>
<filter-class>com.thingworx.security.filter.HttpResponseHeadersFilter</filter-class>
<init-param>
<param-name>Cache-Control</param-name>
<param-value>SET no-store</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>PrivateResourcesCache</filter-name>
<url-pattern>/private/*</url-pattern>
</filter-mapping>
War dies hilfreich?