Composer での ThingWorx モデルの定義 > セキュリティ > Cache-Control ヘッダーのカスタマイズ
Cache-Control ヘッダーのカスタマイズ
ここで説明する各アイテムは、会社でメッセージキャッシュが必要であるか、接続先のクライアントに同じ応答を何度も送信することがわかっている場合にのみ、設定する必要があります。
概要
Cache-Control は、HTTP リソースを提供する際に以下によってパフォーマンスと応答性を向上させるためのメカニズムです。
各リソースが Cache-Control ヘッダーを介してそのキャッシュポリシーを定義できるようにする。
Cache-Control ヘッダーで、誰が、どのような条件で、どれだけの期間、応答をキャッシュできるかを定義する。
リソースのタイプに応じ、使用すべき最適な Cache-Control ポリシーがあります。たとえば、パブリックイメージはキャッシュの候補としてふさわしいですが、ユーザーの機密データが含まれているページはキャッシュの候補としてふさわしくありません。
理想的には、できるだけ多くの数の応答を、できるだけ長期間にわたってクライアント上にキャッシュして、効率的な再検証のメカニズムを実装します。リソースに最適な Cache-Control ポリシーを決定する際には、 この Web ページの「最適な Cache-Control ポリシーの定義」のセクションの図を参照してください。
Cache-Control ディレクティブの完全なリストについては、 この Web ページを参照してください。
Cache-Control ヘッダーの処理
Cache-Control ヘッダーは以下の方法によって処理できます。
Java とサーブレット API を使用している場合に HttpServletResponse#setHeader(String name, String value) API を呼び出すなどして、アプリケーション内から、応答オブジェクトにヘッダーを追加する。
Apache などの Web サーバーから (mod_expires を参照)。
ロードバランサー、プロキシなどから (HAProxy と Nginx など)。
http ページ内のメタタグから。
通常、ヘッダーを設定する方法には、次の 2 つがあります。
ヘッダーがすでに設定されている場合に、値をオーバーライドする。
ヘッダーがすでに設定されている場合に、既存の値に値を追加する。
ThingWorx での Cache-Control ヘッダーのカスタマイズ
キャッシュ制御オプションを修正すると、影響を受ける ThingWorx サーバーのパフォーマンスが低下する可能性があります。メッセージのキャッシュ期間が短くなるかまったくキャッシュされなくなると、受信メッセージの処理時間が長くなる可能性があります。キャッシュされるメッセージの数が増えてキャッシュ期間が長くなると、処理中に消費されるメモリが増える可能性があります。
ThingWorx でキャッシュ制御の設定をカスタマイズするには、以下の手順に従って Apache Tomcat の web.xml ファイルを修正する必要があります。
1. セキュリティを向上させるため、パラメータ X-Content-Type-Options および X-XSS-Protectionweb.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>