Definición del modelo de ThingWorx en Composer > Seguridad > Personalización de la cabecera de control de la caché
Personalización de la cabecera de control de la caché
Los elementos que se describen aquí se deben configurar solo si la compañía del usuario tiene un requisito de caché de mensajes o si el usuario sabe que enviará la misma respuesta muchas veces a clientes conectados.
Resumen
El control de la caché es un mecanismo para mejorar el rendimiento y la capacidad de respuesta cuando se proporcionan recursos HTTP al permitir lo siguiente:
Que cada recurso defina su directiva de almacenamiento en caché a través de la cabecera Cache-Control.
En la cabecera Cache-Control se define quién puede almacenar en caché la respuesta, en qué condiciones y durante cuánto tiempo.
En función del tipo de recurso, hay una directiva Cache-Control óptima que se debe utilizar. Por ejemplo, las imágenes públicas son buenos candidatos para almacenarse en caché, mientras que las páginas en las que se incluyen datos confidenciales no lo son.
Idealmente, se debe intentar almacenar en caché tantas respuestas como sea posible, durante el máximo tiempo posible, en el cliente e implementar un mecanismo de revalidación eficiente. Consulte el diagrama de la sección "Definición de la política óptima de Cache-Control" de esta página Web para determinar la directiva de control de la caché óptima del recurso.
Consulte esta página Web para obtener una lista completa de directivas de control de la caché.
Gestión de la cabecera de control de la caché
La cabecera de control de la caché se puede gestionar de las siguientes maneras:
Por ejemplo, desde la aplicación, añadiendo la cabecera al objeto de respuesta, al llamar a la API HttpServletResponse#setHeader(String name, String value) si se utiliza Java y las API de Servlet.
Desde un servidor Web, como Apache (consulte mod_expires).
Desde equilibradores de carga, servidores proxy y similares (por ejemplo, HAProxy y Nginx).
Desde metaetiquetas en páginas HTTP.
Por lo general, existen dos maneras de definir una cabecera:
Sustituir el valor si ya se ha definido la cabecera.
Añadir un valor a los valores existentes si ya se ha definido la cabecera.
Personalización de la cabecera de control de la caché en ThingWorx
La modificación de las opciones de control de la caché puede afectar negativamente al rendimiento del servidor de ThingWorx afectado. Si se almacenan en caché mensajes durante un período de tiempo más breve o no se almacenan, los mensajes entrantes pueden tardar más en procesarse. Si se almacenan en caché más mensajes durante un período de tiempo más largo, se puede consumir más memoria durante la operación.
Para personalizar la configuración de control de la caché en ThingWorx, se debe modificar el fichero web.xml de Apache Tomcat:
1. Añada los parámetros X-Content-Type-Options y X-XSS-Protection al fichero web.xml para aumentar la seguridad:
<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. Añada las cabeceras de control de la caché que desee. Por ejemplo:
<init-param>
<param-name>Cache-Control</param-name>
<param-value>SET max-age=86400, public</param-value>
</init-param>
3. Si se requiere una configuración más detallada, se pueden añadir varias instancias del filtro con asignaciones diferentes. Por ejemplo:

<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>
¿Fue esto útil?