AEM Publish服務有兩個主要快取層,即AEMas a Cloud ServiceCDN和AEM Dispatcher。 您可以選擇將客戶管理的CDN放在AEMas a Cloud ServiceCDN前。 AEMas a Cloud ServiceCDN提供內容邊緣交付,確保為全球的使用者提供低延遲的體驗。 AEM Dispatcher會直接在AEM Publish之前提供快取,並用來減少AEM Publish本身不必要的負載。
AEMas a Cloud Service的CDN快取是由HTTP回應快取標題所控制,其目的在於快取內容以最佳化新鮮度與效能之間的平衡。 CDN位於一般使用者和AEM Dispatcher之間,用於快取儘可能接近一般使用者的內容,以確保高效能體驗。
設定CDN快取內容的方式僅限於在HTTP回應上設定快取標題。 這些快取標頭通常是在AEM Dispatcher vhost設定中使用 mod_headers
,但也可以在AEM Publish本身執行的自訂Java™程式碼中設定。
AEMas a Cloud ServiceCDN只會快取HTTP回應,且必須符合下列所有條件:
2xx
或 3xx
GET
或 HEAD
Cache-Control
, Surrogate-Control
,或 Expires
依預設,不會快取HTTP回應 AEM傳送器 自動移除任何HTTP回應快取標題,以避免CDN的快取。 只要仔細覆寫此行為,可使用 mod_headers
使用 Header always set ...
指示詞。
AEMas a Cloud ServiceCDN快取下列專案:
通常,單一URL的HTTP請求/回應會快取為單一物件。 不過,CDN可以在以下情況下處理單一URL的多個物件的快取: Vary
標頭是在HTTP回應上設定。 避免指定 Vary
在值沒有嚴格控制值集的標頭上,因為這可能會導致許多快取遺漏,降低快取命中率。 若要支援在AEM Dispatcher快取各種請求, 檢閱變體快取檔案.
AEM Publish CDN是以TTL (存留時間)為基礎,這表示快取存留期是由 Cache-Control
, Surrogate-Control
,或 Expires
HTTP回應標頭。 如果專案未設定HTTP回應快取標頭,而 適用性條件 若符合,Adobe設定的預設快取存留期為10分鐘(600秒)。
以下是快取標題如何影響CDN快取壽命:
Cache-Control
HTTP回應標題會指示網頁瀏覽器和CDN快取回應的時間長度。 該值以秒為單位。 例如, Cache-Control: max-age=3600
告訴網頁瀏覽器快取一小時的回應。 CDN會忽略此值,如果 Surrogate-Control
HTTP回應標頭也會出現。Surrogate-Control
HTTP回應標題會指示AEM CDN快取回應的時間長度。 該值以秒為單位。 例如, Surrogate-Control: max-age=3600
告訴CDN將回應快取一小時。Expires
HTTP回應標頭會指示AEM CDN (和網頁瀏覽器)快取回應有效的時間。 值為日期。 例如, Expires: Sat, 16 Sept 2023 09:00:00 EST
告訴網頁瀏覽器快取回應,直到指定的日期和時間為止。使用 Cache-Control
在瀏覽器和CDN的快取期限相同時控制快取期限。 使用 Surrogate-Control
當網頁瀏覽器應該在與CDN不同的期間內快取回應。
如果HTTP回應符合AEM Dispatcher快取的資格 每個上述限定詞,則以下為預設值,除非有自訂設定。
內容類型 | 預設CDN快取期限 |
---|---|
HTML/JSON/XML | 5 分鐘 |
資產(影像、影片、檔案等) | 10 分鐘 |
持久查詢(JSON) | 2 小時 |
使用者端資料庫(JS/CSS) | 30 天 |
其他 | 未快取 |
設定CDN快取內容的方式 僅限於在HTTP回應上設定快取標題。 這些快取標頭通常設定在AEM Dispatcher中 vhost
設定,使用 mod_headers
,但也可以在AEM Publish本身執行的自訂Java™程式碼中設定。
當滿足以下所有條件時,會快取對應HTTP請求的HTTP回應:
HTTP要求方法為 GET
或 HEAD
HEAD
HTTP要求只會快取HTTP回應標題。 它們沒有回應內文。HTTP回應狀態為 200
HTTP回應不適用於二進位檔案。
HTTP要求URL路徑以副檔名結尾,例如: .html
, .json
, .css
, .js
等
HTTP要求不包含授權,且未由AEM驗證。
HTTP要求不包含查詢引數。
HTTP要求的路徑 符合允許Dispatcher規則,但不符合拒絕規則.
HTTP回應沒有下列AEM Publish設定的HTTP回應標頭:
no-cache
no-store
must-revalidate
AEM Dispatcher快取以下專案:
Cache-Control
Content-Disposition
Content-Type
Expires
Last-Modified
X-Content-Type-Options
AEM Dispatcher會使用下列方法快取HTTP回應:
enableTTL
設定。如果HTTP回應符合AEM Dispatcher快取的資格 每個上述限定詞,則以下為預設值,除非有自訂設定。
內容類型 | 預設CDN快取期限 |
---|---|
HTML/JSON/XML | 直到失效 |
資產(影像、影片、檔案等) | 永不 |
持久查詢(JSON) | 1分鐘 |
使用者端資料庫(JS/CSS) | 30 天 |
其他 | 直到失效 |
AEM Dispatcher的快取可透過以下方式設定: Dispatcher設定 包括:
使用 mod_headers
若要設定快取標頭 vhost
設定不會影響Dispatcher快取(以TTL為基礎),因為這些會在AEM Dispatcher處理回應後新增到HTTP回應。 若要透過HTTP回應標頭影響Dispatcher快取,需要在AEM Publish中執行並設定適當HTTP回應標頭的自訂Java™程式碼。