REST 엔드포인트의 경우 DAB(Data API Builder)가 요청 헤더와 함께 내부 쿼리 결과 캐시를 Cache-Control 사용하는 방법에 영향을 줄 수 있습니다.
중요합니다
런타임 구성에서 캐싱을 사용하지 않도록 설정하면 이러한 지시문이 무시되고 쿼리가 정상적으로 실행됩니다.
지원되는 Cache-Control 값
| 가치 | 행동 |
|---|---|
no-cache |
DAB가 L1 및 L2 캐시를 모두 바이패스하고, 데이터베이스에서 새 데이터를 가져오고, 캐시를 새 결과로 업데이트하도록 합니다. |
no-store |
응답을 캐시하지 않도록 DAB에 지시합니다(L1 또는 L2에 저장되지 않고 캐시에서 페치하려고 시도하지 않음). |
행동
- 지시문 일치는 대/소문자를 구분하지 않습니다.
- DAB는 max-age 또는 max-stale과 같은 다른 표준
Cache-Control지시문을 해석하지 않습니다. - REST 쿼리 작업에만 적용됩니다. GraphQL 요청 수준 캐시 지시문에는 사용되지 않습니다.
- Cache-Control 요청 HTTP 헤더 값은 L1 및 L2 캐시를 모두 제어합니다.
비고
DAB는 캐시 작업에 대한 캐시 제어 응답 헤더를 설정하지 않습니다.
지시문: no-cache
새 읽기를 강제로 수행하고 캐시 계층을 업데이트합니다.
요청
GET /api/Books
Cache-Control: no-cache
Accept: application/json
응답(예)
HTTP/1.1 200 OK
Content-Type: application/json
[
{ "id": 1, "title": "The Hobbit" },
{ "id": 2, "title": "The Silmarillion" }
]
효과: 캐시는 이제 이 새 결과(구성된 TTL에 따라)를 보유합니다.
지시문: 매장 없음
기존 캐시된 값(있는 경우)을 사용합니다. 그렇지 않으면 데이터베이스를 쿼리하지만 캐시를 새 결과로 채웁니다(또는 새로 고침)하지 않습니다.
요청
GET /api/Books
Cache-Control: no-store
Accept: application/json
응답(예)
HTTP/1.1 200 OK
Content-Type: application/json
[
{ "id": 1, "title": "The Hobbit" },
{ "id": 2, "title": "The Silmarillion" }
]
효과: 이 결과가 아직 캐시되지 않은 경우 저장되지 않습니다. 이전 요청이 캐시를 채웁시면 이후 only-if-cached 요청이 실패할 수 있습니다.
검토
- 데이터베이스에서 새로 고침을 강제 적용하고 캐시를 업데이트해야 하는 경우에 사용합니다
no-cache. - 데이터를 원하지만 이 응답이 캐시를 변경하지 않도록 할 때 사용합니다
no-store(기존 캐시된 값을 읽을 수 있음). - 일반적인 캐싱 동작에 대한 헤더를 생략합니다.