自訂快取控制標題
請僅在您的公司擁有訊息快取需求,或您知道將會多次傳送相同的回應到已連線用戶端時,才配置此處所描述的項目。
概觀
「快取控制」是在提供 HTTP 資源時可改善效能與回應能力的一種機制,具體方式為:
允許每個資源透過 Cache-Control 標題定義其快取政策。
Cache-Control 標題定義能夠快取回應的使用者、可以執行快取的條件以及快取時間長度。
根據資源類型,會存在應使用的最佳 Cache-Control 政策。例如,公開圖像就是可供快取的好候選項,而包含使用者敏感資料的頁面則不是好候選項。
理想情況下,請嘗試在用戶端盡可能長時間快取盡可能多的回應,並實行有效的重新驗證機制。請參考此網頁中「定義最佳 Cache-Control 政策」部份的圖,來協助確定資源的最佳 cache-control 政策。
有關 Cache-Control 指令的完整清單,請參考此網頁
處理快取控制標題
Cache-Control 標題有以下幾種處理方式:
從應用程式中,新增標題到回應物件,例如呼叫 HttpServletResponse#setHeader(String name, String value) API (如果您使用的是 Java 與 Servlet API)。
從 web 伺服器,例如 Apache (請參閱 mod_expires)。
從負載平衡器、proxy 及相似位置 (例如,HAProxy 與 Nginx)。
從 http 頁面的中繼標籤中。
通常有兩種方法可以設定標題:
在已設定標題的情況下取代值。
在已設定標題的情況下新增值到結束值。
在 ThingWorx 中自訂快取控制標題
修改快取控制選項可能會對受影響 ThingWorx 伺服器的效能造成負面影響。如果快取訊息的時間較短或者根本未快取訊息,可能會花費較長時間來處理傳入訊息。如果花費較長時間快取較多訊息,則在操作期間可能會耗用較多記憶體。
若要在 ThingWorx 中自訂快取控制設定,必須修改 Apache Tomcat web.xml 檔案:
1. web.xml 檔案中新增 X-Content-Type-OptionsX-XSS-Protection 參數以增加安全性:
<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>
這是否有幫助?