캐시 키 작업

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

캐시 정책을 사용하는 경우 캐시 키를 구성하여 캐시된 값 키의 고유성을 보장합니다. 구성 가능한 다른 값과 함께 캐시 키는 투입한 것과 동일한 데이터를 안정적으로 가져올 수 있는 방법을 제공합니다. PopulateCache 정책, LookupCache 정책, InvalidateCache 정책, ResponseCache 정책에서 캐시 키를 사용합니다.

구성 요소의 값(<CacheKey>/<KeyFragment>, <Scope>, <Prefix>)은 연결되어 캐시에 입력한 값과 연결된 식별자를 만듭니다. 동일한 구성을 사용하여 값을 검색하세요.

다음 캐시 정책 구성 요소를 사용하여 캐시 키를 만들 수 있습니다.

캐시 구성 요소 설명
<CacheKey>/<KeyFragment> <CacheKey> <KeyFragment> 요소를 결합하여 캐시 항목의 고유 식별자를 지정합니다. KeyFragment 값은 정적 리터럴이거나 변수에서 설정할 수 있습니다.
<Scope> 또는 <Prefix> <Scope> 또는 <Prefix> 요소를 사용하여 추가 네임스페이스 캐시 키를 만듭니다. <Scope>는 사전 정의된 값 목록을 열거합니다. <Prefix> 요소는 <Scope>를 직접 선택한 값으로 재정의합니다.

값은 다음과 같은 형식으로 연결되는데, <Scope> 또는 <Prefix> 값은 KeyFragment 값과 이중 밑줄로 구분됩니다. 여러 KeyFragment 값도 이중 밑줄로 구분됩니다.

scope | prefix__keyfragment[__keyfragment]

응답 캐시 정책을 사용하면 동의 응답 헤더의 값을 사용하여 이 캐시 키를 추가할 수 있습니다.

<CacheKey> 사용

<CacheKey> 요소는 Edge가 생성하는 각 캐시 항목의 고유 식별자(키)를 만드는 방법을 구성합니다. Edge는 캐시된 값을 검색할 때 캐시 키를 사용하여 올바른 값을 찾습니다. ResponseCache 정책에서 하나의 구성은 캐싱 및 검색 키를 모두 정의합니다. PopulateCache 및 LookupCache 정책에서 각 정책의 <CacheKey> 요소가 동일해야 합니다. 그래야 캐시에서 검색된 값이 해당 입력 값과 일치하게 됩니다.

<CacheKey> 요소는 여러 <KeyFragment> 요소를 포함할 수 있습니다. 런타임 시 <KeyFragment> 요소에서 지정된 값은 그 사이에 두 개의 밑줄로 연결되어 캐시 키의 일부를 구성합니다.

예를 들어 다음 구성은 캐시 키에 사용할 hello__world 값을 만듭니다.

<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>

아래와 같이 <KeyFragment> 요소에서 변수를 참조하여 캐시 키의 변수 값을 사용할 수도 있습니다.

<KeyFragment ref="variable_name"/>

예를 들어 캐시 키 값이 요청 메시지의 Content-Type을 통합하도록 하려면 아래와 같이 작업을 수행합니다.

<KeyFragment ref="request.header.Content-Type"/>

다음 구성에서 request.header.Content-Type 변수의 값은 application/json입니다.

<CacheKey>
  <KeyFragment>apiAccessToken</KeyFragment>
  <KeyFragment ref="request.header.Content-Type" />
  <KeyFragment>bar</KeyFragment>
</CacheKey>

그러면 apiAccessToken__application/json__bar로 끝나는 캐시 키가 생성됩니다.

사용할 수 있는 변수 목록은 변수 참조에서 확인하세요.

쿼리 매개변수에서 파생된 캐시 키

request.queryparam. <queryparam_name> 및 request.querystring과 같은 변수를 사용하여 키에 요청 쿼리 문자열의 일부가 포함되도록 구성할 수 있습니다. 예를 들어 다음 URL은 캐시 키에 사용할 수 있는 두 개의 쿼리 매개변수(param1 및 param2)를 사용합니다.

http://myaccount.apigee.net/mydata?param1=value1&param2=value2

<CacheKey> 요소는 이러한 값을 다음과 같은 구성과 통합할 수 있습니다.

<CacheKey>
    <KeyFragment ref="request.queryparam.param1" />
    <KeyFragment ref="request.queryparam.param2" />
<CacheKey>

런타임 시 캐시 키에는 아래와 같이 연결된 매개변수 값이 포함됩니다.

other_key_parts__value1__value2

변수를 사용하여 매개변수의 값을 삽입할 경우 값은 <KeyFragment> 요소 순서에서 제안하는 순서대로 값이 연결됩니다. 또한 Edge는 <KeyFragment> 요소와 구체적으로 참조하는 값만 사용합니다. 요청 쿼리 매개변수 목록이 다르다면 캐시 키에서 변이를 고려하지 않습니다.

또 다른 방법은 request.querystring 변수를 사용하여 전체 매개변수 문자열을 말 그대로 캐시 키의 일부로 삽입하는 것입니다. 이 메서드는 모든 매개변수를 고려하지만 매개변수 순서가 요청마다 다를 경우 키가 다르다는 점에 유의하세요. 즉, param1=value1&param2=value2param2=value2&param1=value1는 동일한 캐시 키 값을 가져오지 않습니다.

사용할 수 있는 변수 목록은 변수 참조에서 확인하세요.

<Scope> 및 <Prefix> 사용

<Scope><Prefix> 요소를 사용하면 네임스페이스 프리픽스로 키를 보강할 수 있습니다. 이들이 나타내는 값은 캐시 키 앞에 추가됩니다.

<Scope> 요소가 기본적으로 사용됩니다. 이는 넓은 범위에서 좁은 범위까지 나열한 값이며, 기본값은 가장 좁은 범위입니다. 다른 값을 지정하거나 <Prefix> 요소 값을 지정하지 않으면 이 기본값이 사용됩니다. <Prefix> 요소를 사용하여 <Scope> 값을 재정의할 수 있으므로 네임스페이스의 커스텀 값을 지정할 수 있습니다.

예를 들어 가장 광범위한 범위인 <Scope> 값 'Global'은 조직과 환경 이름을 나타냅니다. 따라서 프록시가 'mycompany'라는 조직에서 배포되고 'prod'라는 환경에서 배포된 경우 최종 값은 다음과 같습니다.

구성 결과
<Scope>Global</Scope> mycompany__prod__.

위에서 정의한 캐시 키로 Global(전역) 범위를 사용할 경우 결과는 다음과 같습니다.

구성 결과
<Scope>Global</Scope>
<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>
mycompany__prod__hello__world.

LookupCache 정책에 설명된 대로 범위를 Global에서 Exclusive로 구체성을 높이도록 구성할 수 있습니다. Exclusive 범위는 가장 구체적이므로 주어진 캐시 내의 네임스페이스 충돌 위험을 최소화합니다. Exclusive 범위를 사용하는 각 캐시 항목은 다음 형식의 프리픽스가 붙습니다.

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]

예를 들어 <Scope>의 Exclusive 값을 사용하여 생성된 캐시 키는 다음과 같습니다.

apifactory__test__weatherapi__16__default__apiAccessToken