Definizione del modello ThingWorx in Composer > Protezione > Personalizzazione dell'intestazione Cache Control
Personalizzazione dell'intestazione Cache Control
Gli articoli descritti qui devono essere configurati solo se l'azienda ha un requisito di cache dei messaggi o se si prevede di inviare la stessa risposta molte volte a client connessi.
Panoramica
Cache Control è un meccanismo per migliorare le prestazioni e la reattività quando si gestiscono le risorse HTTP nei modi descritti di seguito.
Permettendo a ciascuna risorsa di definire i propri criteri di memorizzazione nella cache tramite l'intestazione Cache-Control.
L'intestazione Cache-Control definisce chi può memorizzare nella cache la risposta, in quali condizioni e per quanto tempo.
A seconda del tipo di risorsa, andrebbe utilizzato il criterio Cache-Control più adatto. Ad esempio, è appropriato memorizzare nella cache le immagini pubbliche ma non pagine contenenti dati sensibili degli utenti.
L'ideale sarebbe memorizzare quante più risposte possibili, il più a lungo possibile, sul client e implementare un meccanismo di rivalidazione efficace. Fare riferimento allo schema proposto nella sezione sulla definizione di un metodo di Cache-Control ottimale in questa pagina web per determinare il criterio di Cache Control più adatto alla risorsa.
Fare riferimento a questa pagina web per un elenco completo delle direttive Cache Control.
Gestione dell'intestazione del controllo della cache
L'intestazione Cache-Control può essere gestita nei modi indicati di seguito.
Dall'interno dell'applicazione, aggiungendo l'intestazione all'oggetto risposta, ad esempio chiamando l'API HttpServletResponse#setHeader(String name, String value) se si utilizza Java e le API Servlet.
Da un server Web come Apache (vedere mod_expires).
Da servizi di bilanciamento del carico, proxy e simili (ad esempio HAProxy e Nginx).
Da meta tag nelle pagine http.
In genere, è possibile impostare un'intestazione nei due modi indicati di seguito.
Sostituire il valore se l'intestazione è già impostata.
Aggiungere un valore ai valori esistenti se l'intestazione è già impostata.
Personalizzazione dell'intestazione Cache Control in ThingWorx
La modifica delle opzioni di controllo della cache potrebbe influire negativamente sulle prestazioni del server ThingWorx interessato. Se i messaggi vengono memorizzati nella cache per un periodo di tempo più breve o non vengono memorizzati affatto l'elaborazione dei messaggi in entrata potrebbe richiedere più tempo. Se nella cache vengono memorizzati più messaggi per un periodo di tempo più lungo, è possibile che durante l'operazione venga utilizzata più memoria.
Per personalizzare le impostazioni di controllo della cache in ThingWorx, è necessario modificare il file web.xml Apache Tomcat:
1. Aggiungere i parametri X-Content-Type-Options e X-XSS-Protection nel file web.xml per aumentare la protezione:
<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. Aggiungere le intestazioni di controllo della cache desiderate. Ad esempio:
<init-param>
<param-name>Cache-Control</param-name>
<param-value>SET max-age=86400, public</param-value>
</init-param>
3. Se è richiesta una configurazione più dettagliata, è possibile aggiungere più istanze del filtro con mappature diverse. Ad esempio:

<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>