相同影像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

若要修正問題,請遵循下列步驟:

  1. 瞭解每個CDN POP會維護自己的快取。 在每個POP第一次要求特定URL時,將會導致快取MISS;來自相同POP的後續要求(當TTL有效時)將會是快取HIT。
  2. 請確定servlet為瀏覽器和CDN設定明確的快取標題。 使用Cache-Control: max-age=86400, public並考慮新增Surrogate-Controls-maxage以取得CDN特定的TTL (若有支援)。
  3. 避免使用privateno-store指示,因為這些指示會防止CDN快取。
  4. 使用工具(例如curl和檢閱CDN記錄檔)來確認每個POP的第一個要求是MISS,以及TTL中來自相同POP的後續要求是HIT。

如需詳細資訊,請參閱AEM as a Cloud Service CDN快取檔案。

recommendation-more-help
experience-cloud-kcs-help-kbarticles