내 자신의 질문에 대답하기 위해 돌아 오는 주요 문제는 항상 동시에 만료되는 모든 것을 피하는 방법입니다. 이것이 허용되면 시스템은 캐시를 다시 채우는 동안 속도가 느려지고 정체됩니다.
대부분의 경우 실제로 이것은 실제로 문제가되지 않습니다. 시간이 지남에 따라 모든 구성 요소는 만료 시간 측면에서 표류하는 경향이 있습니다. 여러 개의 구성 요소가 동시에 동시에 재 구축되는 경우 단일 구성 요소로 함께 캐시되어야하기 때문에 코드 냄새가납니다 (예 : 페이지의 고유 한 머리글, 본문 및 바닥 글이 별도로 캐시 된 경우) 페이지 자체를 캐시하십시오).
전체 캐시를 지우거나 캐시 키를 회전 한 경우와 같이 시스템을 시작한 후 한 번에 많은 항목을 캐시해야하는 경우가 있습니다. 이 경우 구성 요소가 빠르게 채워지기 때문에 일반적으로 그렇게 나쁘지 않으며 만료는 나중에 표류합니다.
이것이 문제가되는 한, 몇 가지 해결책이 있습니다.
- 고정 된 기간 대신 범위 내에서 임의의 캐시 만료 기간을 선택하면됩니다 (예 : 60 분 대신 15 분에서 90 분 사이의 임의의 정수).
- 오래된 응답을 허용하십시오. 캐시 항목이 만료되었다고해서 여전히 캐시 항목을 사용할 수 없다는 의미는 아닙니다. 비즈니스 요구에 따라 만료 후 원본 버전을 가져 오는 성능 문제가있는 경우이를 사용할 수 있습니다. HTTP에서 이는 "must-revalidate"의 목적입니다 (만약 true이면 만료 후 캐시 된 버전을 사용 하지 않음 을 의미합니다 ).