相同影像URL的每個POP的CDN快取遺漏
本文說明即使快取控制標題指定24小時TTL,Adobe Experience Manager as a Cloud Service中servlet提供的影像仍可能在不同的CDN出現點(POP)造成CDN快取MISS的原因,並提供預期CDN快取行為的指引。
說明 description
環境
Adobe Experience Manager as a Cloud Service (所有版本)
問題/症狀
servlet會傳回商店頁面的JPEG影像,並設定Cache-Control: max-age=86400標題(24小時)。 不過,CDN記錄顯示,系統在一天內從發佈執行個體多次擷取相同的影像URL,且不同CDN位置(POP)的快取狀態為遺漏。
記錄專案範例:
/path/sample.jpg的POP「RTM」快取遺漏/path/sample.jpg的POP「TOJ」快取遺漏
我們期望在第一次要求後,系統會從CDN快取影像並提供24小時(不論POP為何)。 而是每個POP在第一次要求影像時會遇到快取遺漏。
原因
每個CDN POP都有自己的快取。 在每個POP第一次要求資源時會導致MISS,而且在TTL過期之前,只有該POP的後續要求才會從快取中處理。
解決方法 resolution
若要修正問題,請遵循下列步驟:
- 瞭解每個CDN POP會維護自己的快取。 在每個POP第一次要求特定URL時,將會導致快取MISS;來自相同POP的後續要求(當TTL有效時)將會是快取HIT。
- 請確定servlet為瀏覽器和CDN設定明確的快取標題。 使用
Cache-Control: max-age=86400, public並考慮新增Surrogate-Control或s-maxage以取得CDN特定的TTL (若有支援)。 - 避免使用
private或no-store指示,因為這些指示會防止CDN快取。 - 使用工具(例如
curl和檢閱CDN記錄檔)來確認每個POP的第一個要求是MISS,以及TTL中來自相同POP的後續要求是HIT。
如需詳細資訊,請參閱AEM as a Cloud Service CDN快取檔案。
recommendation-more-help
experience-cloud-kcs-help-kbarticles