다음을 통해 공유


캐시에서 가져오기

적용 대상: 모든 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 캐시를 사용합니다.
- externalAzure 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;
  }"
 />

자세한 내용은 정책 식컨텍스트 변수를 참조하세요.

정책 작업에 대한 자세한 내용은 다음을 참조하세요.