Composer의 ThingWorx 모델 정의 > 보안 > Cache-Control 머리글 사용자 정의
Cache-Control 머리글 사용자 정의
여기에 설명된 항목은 회사에 메시지 캐시 요구사항이 있거나 연결된 클라이언트에 동일한 응답을 여러 번 보낼 것을 알고 있는 경우에만 구성해야 합니다.
개요
Cache-Control은 다음을 통해 HTTP 리소스를 제공할 때 성능과 반응성을 향상시켜 주는 메커니즘입니다.
각 리소스가 Cache-Control 머리글을 통해 캐시 정책을 정의하도록 허용합니다.
Cache-Control 머리글은 응답을 캐시할 수 있는 사용자, 조건, 기간을 정의합니다.
리소스 유형에 따라 사용해야 하는 최적의 Cache-Control 정책이 있습니다. 예를 들어, 공개 이미지는 캐시할 좋은 후보이지만, 사용자의 중요 데이터가 포함된 페이지는 좋은 후보가 아닙니다.
클라이언트에 대해 가능한 많은 응답을 가능한 오랫동안 캐시하도록 하고, 효율적인 재유효성 검사 메커니즘을 구현하는 것이 이상적입니다. 이 웹 페이지의 "최적의 Cache-Control 정책 정의" 단원에 있는 다이어그램을 참조하여 리소스에 대한 최적의 Cache-Control 정책을 결정할 수 있습니다.
Cache-Control 지시문의 전체 목록은 이 웹 페이지를 참조하십시오.
Cache-Control 머리글 처리
다음과 같은 방법으로 Cache-Control 머리글을 처리할 수 있습니다.
응용 프로그램 내에서 응답 객체에 머리글 추가(예: Java 및 Servlet API를 사용하는 경우 HttpServletResponse#setHeader(String name, String value) API 호출)
Apache와 같은 웹 서버에서(mod_expires 참조)
부하 분산, 프록시 및 유사 항목에서(예: HAProxy 및 Nginx)
http 페이지의 메타 태그에서
일반적으로 다음 두 가지 방법으로 머리글을 설정할 수 있습니다.
머리글이 이미 설정된 경우 값을 재정의합니다.
머리글이 이미 설정된 경우 기존 값에 값을 추가합니다.
ThingWorx에서 Cache-Control 머리글 사용자 정의
Cache-Control 옵션을 수정하면 영향 받는 ThingWorx 서버의 성능에 부정적인 영향을 줄 수 있습니다. 메시지가 짧은 기간 동안 캐시되거나 캐시되지 않으면 수신 메시지를 처리하는 데 시간이 오래 걸릴 수 있습니다. 더 오랜 기간 동안 더 많은 메시지가 캐시되면 작업 중 더 많은 메모리가 사용됩니다.
ThingWorx에서 Cache-Control 설정을 사용자 정의하려면 Apache Tomcat web.xml 파일을 수정해야 합니다.
1. 보안을 향상하려면 X-Content-Type-OptionsX-XSS-Protection 매개 변수를 web.xml 파일에 추가합니다.
<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. 원하는 Cache-Control 머리글을 추가합니다. 예:
<init-param>
<param-name>Cache-Control</param-name>
<param-value>SET max-age=86400, public</param-value>
</init-param>
3. 더 세부적인 구성이 필요한 경우 서로 다른 매핑이 있는 필터의 여러 인스턴스를 추가할 수 있습니다. 예:

<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>
도움이 되셨나요?