캐시에서 가져오기
적용 대상: 모든 API Management 계층
cache-lookup
정책을 사용하여 캐시 조회를 수행하며 사용 가능한 경우 올바르게 캐시된 응답을 반환합니다. 이 정책은 응답 콘텐츠가 일정 기간 동안 정적 상태인 경우 적용해야 합니다. 응답 캐싱은 백 엔드 웹 서버에 부과된 대역폭 및 처리 요구 사항을 줄이며 API 소비자가 인지하는 대기 시간을 줄여 줍니다.
참고 항목
이 정책에는 해당하는 캐시에 저장 정책이 있어야 합니다.
Important
기본 제공 캐시는 휘발성이며 동일한 API Management 서비스의 동일한 지역에 있는 모든 유닛에서 공유됩니다.
참고 항목
정책 문에 제공된 순서대로 정책의 요소 및 자식 요소를 설정합니다. 이 정책을 구성하는 데 도움이 되도록 포털은 양식 기반의 안내형 편집기를 제공합니다. API Management 정책을 설정하거나 편집하는 방법에 대해 자세히 알아봅니다.
정책 문
<cache-lookup vary-by-developer="true | false" vary-by-developer-groups="true | false" caching-type="prefer-external | external | internal" downstream-caching-type="none | private | public" must-revalidate="true | false" allow-private-response-caching="@(expression to evaluate)">
<vary-by-header>Accept</vary-by-header>
<!-- should be present in most cases -->
<vary-by-header>Accept-Charset</vary-by-header>
<!-- should be present in most cases -->
<vary-by-header>Authorization</vary-by-header>
<!-- should be present when allow-private-response-caching is "true"-->
<vary-by-header>header name</vary-by-header>
<!-- optional, can be repeated -->
<vary-by-query-parameter>parameter name</vary-by-query-parameter>
<!-- optional, can be repeated -->
</cache-lookup>
특성
특성 | 설명 | 필수 항목 | 기본값 |
---|---|---|---|
allow-private-response-caching | true 로 설정하면 Authorization 헤더를 포함하는 요청의 캐싱을 허용합니다. 정책 식이 허용됩니다. |
아니요 | false |
caching-type | 다음 특성 값 중에서 선택합니다. - internal 기본 제공 API Management 캐시를 사용합니다.- external Azure API Management에서 외부 Azure Cache for Redis 사용에 설명된 대로 외부 캐시를 사용합니다.- prefer-external 구성된 경우 외부 캐시를 사용하고 그렇지 않으면 내부 캐시를 사용합니다.정책 식은 허용되지 않습니다. |
아니요 | prefer-external |
downstream-caching-type | 이 특성은 다음 값 중 하나로 설정해야 합니다. - none - 다운스트림 캐싱이 허용되지 않습니다. - private - 다운스트림 프라이빗 캐싱이 허용됩니다. - public - 프라이빗 및 공유 다운스트림 캐싱이 허용됩니다. 정책 식이 허용됩니다. |
아니요 | 없음 |
must-revalidate | 다운스트림 캐싱을 사용하는 경우 이 특성이 게이트웨이 응답에서 must-revalidate 캐시 제어 지시문을 설정 또는 해제합니다. 정책 식이 허용됩니다. |
아니요 | true |
vary-by-developer | 요청에 포함된 구독 키를 소유한 개발자 계정별로 응답을 캐시하려면 true 로 설정합니다. 정책 식이 허용됩니다. |
예 | false |
vary-by-developer-groups | 사용자 그룹별 캐시 응답을 위해서는 true 로 설정합니다. 정책 식이 허용됩니다. |
예 | false |
Elements
이름 | 설명 | 필수 |
---|---|---|
vary-by-header | Accept , Accept-Charset , Accept-Encoding , Accept-Language , Authorization , Expect , From , Host , If-Match 와 같은 지정된 헤더의 값별로 응답 캐싱을 시작하려면 이러한 요소 중 하나 이상을 추가합니다. |
아니요 |
vary-by-query-parameter | 지정된 쿼리 매개 변수 값별로 응답 캐싱을 시작하려면 이러한 요소 중 하나 이상을 추가합니다. 단일 또는 여러 매개 변수를 입력합니다. 세미콜론을 구분 기호로 사용합니다. | 아니요 |
사용
사용법 참고 사항
- API Management는 HTTP GET 요청에 대해서만 캐시 조회를 수행합니다.
vary-by-query-parameter
를 사용할 때 rewrite-uri 템플릿에서 매개 변수를 선언하거나copy-unmatched-params
특성을false
로 설정할 수 있습니다. 이 플래그를 사용하지 않도록 설정하면 선언되지 않은 매개 변수가 백 엔드로 전송됩니다.
- 이 정책은 정책 섹션에서 한 번만 사용할 수 있습니다.
예제
해당 cache-store 정책의 예
<policies>
<inbound>
<base />
<cache-lookup vary-by-developer="false" vary-by-developer-groups="false" downstream-caching-type="none" must-revalidate="true" caching-type="internal" >
<vary-by-query-parameter>version</vary-by-query-parameter>
</cache-lookup>
</inbound>
<outbound>
<cache-store duration="seconds" />
<base />
</outbound>
</policies>
정책 식을 사용하는 예제
이 예제에서는 지원 서비스의 Cache-Control
지시문에 지정된 대로 백 엔드 서비스의 응답 캐싱과 일치하는 API Management 응답 캐싱 기간을 구성하는 방법을 보여 줍니다.
<!-- The following cache policy snippets demonstrate how to control API Management response cache duration with Cache-Control headers sent by the backend service. -->
<!-- Copy this snippet into the inbound section -->
<cache-lookup vary-by-developer="false" vary-by-developer-groups="false" downstream-caching-type="public" must-revalidate="true" >
<vary-by-header>Accept</vary-by-header>
<vary-by-header>Accept-Charset</vary-by-header>
</cache-lookup>
<!-- Copy this snippet into the outbound section. Note that cache duration is set to the max-age value provided in the Cache-Control header received from the backend service or to the default value of 5 min if none is found -->
<cache-store duration="@{
var header = context.Response.Headers.GetValueOrDefault("Cache-Control","");
var maxAge = Regex.Match(header, @"max-age=(?<maxAge>\d+)").Groups["maxAge"]?.Value;
return (!string.IsNullOrEmpty(maxAge))?int.Parse(maxAge):300;
}"
/>
자세한 내용은 정책 식 및 컨텍스트 변수를 참조하세요.
관련 정책
관련 콘텐츠
정책 작업에 대한 자세한 내용은 다음을 참조하세요.
- 자습서: API 변환 및 보호
- 정책 문 및 해당 설정에 대한 전체 목록에 대한 정책 참조
- 정책 식
- 정책 설정 또는 편집
- 정책 구성 재사용
- 정책 코드 조각 리포지토리
- Azure API Management 정책 도구 키트
- Azure의 Microsoft Copilot을 사용하는 작성자 정책